matplot.pyplot 绘制图像 回顾

matplot.pyplot 绘制图像 回顾,第1张

matplot.pyplot 绘制图像 回顾 按年月进行计数,汇总例子

导包

import pandas as pd
import matplotlib.pyplot as plt

读取数据

path = r'C:UsersAdministratorDesktop42numbers.xls'

查看数据

data


这里选择 某一列 的时间进行,进行汇总统计
统计出 不同 年份 不同月份 的数量
然后 绘制 柱状图/饼图

首先 以 年月 进行 汇总 统计

df = data
data_new = df.groupby([df["sell_date"].dt.year, df["sell_date"].dt.month]).count()

小tips:

pd.groupby(
by=None, 
axis=0,  # 恒坐标还是纵坐标,默认位 index横坐标
level=None, 
as_index=True, 
sort=True, 
group_keys=True,
 squeeze=NoDefault.no_default, 
 observed=False, 
 dropna=True)

举例子:

df = pd.Dataframe({'Animal': ['Falcon', 'Falcon',
                              'Parrot', 'Parrot'],
                   'Max Speed': [380., 370., 24., 26.]})

df
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0

df.groupby(['Animal']).mean()
        Max Speed

Animal
Falcon 375.0
Parrot 25.0

默认是根据index即行进行分组

arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
          ['Captive', 'Wild', 'Captive', 'Wild']]
index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))
df = pd.Dataframe({'Max Speed': [390., 350., 30., 20.]},
                  index=index)
df
这里level 就是根据index进行分类,
这个数据共有外内两个索引 index,
 外Animal 
 内 Type
            Max Speed

Animal Type
Falcon Captive 390.0
Wild 350.0
Parrot Captive 30.0
Wild 20.0

外索引,  level = 0

df.groupby(level=0).mean()

        Max Speed
Animal
Falcon      370.0
Parrot       25.0


内索引 level = '内索引的名字'
就是说 通过 数字 or 名字, 两者 都可以 对数据进行分组.

df.groupby(level=“Type”).mean()

         Max Speed
Type
Captive      210.0
Wild         185.0
l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
df = pd.Dataframe(l, columns=["a", "b", "c"])
df
 a     b      c
 1     2      3
 1   None  4
 1     2       2

根据 b 列进行分组

df.groupby(by=["b"]).sum()
a   c

b
1.0 2 3
2.0 2 5

默认会去掉 Nan的那一组, 当然也可以将这一列分组显示出来

df.groupby(by=["b"], dropna=False).sum()

a c
b
1.0 2 3
2.0 2 5
NaN 1 4

返回 例子
这里是根据 年 月 的,进行统计数的分组

data_new = df.groupby([df["sell_date"].dt.year, df["sell_date"].dt.month]).count()

这里选择对 sell_date进行柱状图的统计

data['sell_date'] =  data['sell_date'].astype("datetime64") # 首先将这列转为 时间格式
df = data[['sell_date']] # df 存储这列
df.groupby([df["sell_date"].dt.year, df["sell_date"].dt.month]).count().plot(kind="bar") # 分组计数绘制 柱状图
plt.yticks([1,2,3,4,5,6]) # 设置 y轴的每一列的数
plt.xticks(rotation=45) # 设置x轴 下面字体 旋转45度
plt.xlabel('sell_date') # 设置 x轴 名字
plt.grid() # 背景增加网格

设置饼图的数据

pie = []
for i in data_new['month_count']:
    pie.append(i)

设置饼图每个数据的对应标签名

label=[]
for a in data_new.index:
    a = str(a[0])+'年'+str(a[1])+'月'
    label.append(a)


饼图参数

pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, hold=None)
 x:饼状图的块数,及每块的值
explode:对应的块偏离圆心的比例
labels:每块表示的内容
colors:也是数组,表示每块内容的颜色,设置为None则系统自动分配颜色
autopct:表示显示每块所占的比例
pctdistance=0.8:百分比距中心的距离比例
shadow=True:是否有阴影效果
labeldistance:表示每块对应内容文字距离中心点是饼图半径的倍数
startangle=90 起始绘制角度,并且是逆时针绘制
radius:饼状图的半径,默认是1  hold:是否覆盖其他图形,如果在一个figure中绘制,选择True会覆盖,False会共存
plt.rcParams['font.sans-serif']=['Simhei'] # 保证饼图可以显示中文


plt.figure(figsize=(20,20)) # 设置画布的大小


patches,l_text,p_text = plt.pie(pie,
labels=label,
autopct='%1.1f%%',
startangle=0,
shadow=False,
pctdistance=0.8)
plt.legend(loc="upper right",fontsize=15,bbox_to_anchor=(1.1,1.05),borderaxespad=0.3)

# 设置饼图字体大小
for t in l_text:
    t.set_size(15)
for t in p_text:
    t.set_size(20)
# 保存饼图
# plt.savefig("C:\饼图02.png",dpi=200,bbox_inches='tight')  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5625354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存