python导入数据画柱形图、箱型图、饼图、散点图

柱形图

import pandas as pd
import numpy as np
catering_sale = r'C:\Users\86184\Desktop\文件集/catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引
print(data.describe())
bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
labels = ['A_lei','[500,1000)','[1000,1500)','[1500,2000)',
'[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)']
data['sale分层'] = pd.cut(data.sale, bins, labels=labels)
print(data)
aggResult = data.groupby('sale分层').agg({'sale':'count'})
print(aggResult)
pAggResult = round(aggResult/aggResult.sum(), 2, )
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5)) # 设置图框大小尺寸
pAggResult['sale'].plot(kind='bar',width=0.1,fontsize=10) # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.title('柱形图 number3013',fontsize=20)
plt.show()

 

 

箱型图

import pandas as pd
catering_sale = r'C:\Users\86184\Desktop\文件集/catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
print(data)
print(data.describe(),data.describe().max()-data.describe().min())

import matplotlib.pyplot as plt # 导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

plt.figure(figsize=(10,5)) # 建立图像
p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() # 从小到大排序,该方法直接改变原对象

'''
用annotate添加注释
其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制
以下参数都是经过调试的,需要具体问题具体调试。
'''
for i in range(len(x)):
if i>0:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

plt.title('箱型图 number3013',fontsize=30)

plt.show() # 展示箱线图

 

 

 

饼图

# 1.导入数据并格式化
import pandas as pd
import numpy as np
# 导入数据


df = pd.read_excel(r"C:\Users\86184\Desktop\文件集/catering_fish_congee.xls")
# 根据label列分组并计数
df_label = df.groupby("销量").size()
# 转化为作图所需要的array格式,如:([[ 0, 37536],[ 1, 12322]])
datas = list(zip(df_label.index.to_list(), df_label.to_list()))
datas = np.array(datas)
plt.figure(figsize = (15, 11))

# 2.绘制饼图
import matplotlib.pyplot as plt
# 设置字体和编码格式
plt.rcParams['font.sans-serif'] = 'simhei'
plt.rcParams['axes.unicode_minus'] = False
# 添加数据,标签,比例
plt.pie(datas[:, 1], labels=datas[:, 0], autopct="%.1ff%%")
# 在左上方添加图例
plt.legend(datas[:, 0], loc="upper right")
# 添加标题
plt.title("饼图 number3013",fontsize=20)
# 展示饼图
plt.show()

散点图

 

# 导入 pandas 和 matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

 



# 读取文件
df = pd.read_excel(r"C:\Users\86184\Desktop\文件集/catering_sale.xls")

 

print(df.describe())

 

years = list(range(1,len(df)+1))
turnovers = df['销量']
plt.figure(figsize = (12, 8))
plt.scatter(years, turnovers, c='red', s=50, label='legend')

 

plt.xlabel("行数", fontdict={'size': 16})
plt.ylabel("销量", fontdict={'size': 16})
plt.title("散点图 3013", fontdict={'size': 30})
plt.legend(loc='best')
plt.show()

 

 

 

posted @ 2023-02-26 16:36  菜盒子  阅读(1041)  评论(0)    收藏  举报