1 import pandas as pd 2 catering_sale = 'E:/anaconda3/jupyterFile/数据分析/catering_sale.xls' # 餐饮数据 3 data = pd.read_excel(catering_sale, index_col='日期')#读取数据,指定“日期列为索引列” 4 print(data.describe()) 5 ''' 6 describe()函数输出: 7 count:数量统计,此列共有多少有效值 8 unipue:不同的值有多少个 9 std:标准差 10 min:最小值 11 25%:四分之一分位数 12 50%:二分之一分位数 13 75%:四分之三分位数 14 max:最大值 15 mean:均值 16 '''
1 import matplotlib.pyplot as plt #导入图库 2 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 3 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 4 5 plt.figure() 6 p = data.boxplot(return_type='dict') #画箱型图 7 x = p['fliers'][0].get_xdata() 8 y = p['fliers'][0].get_ydata() 9 y.sort() 10 ''' 11 用annotate添加注释 12 其中有些相近的点,注释会出现重叠,难以看清,需要一些技巧来控制 13 以下参数都是经过调试的,需要具体问题具体调试 14 15 ''' 16 for i in range(len(x)): 17 if i>0: 18 plt.annotate(y[i], xy=(x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i])) 19 else: 20 plt.annotate(y[i], xy=(x[i],y[i]), xytext = (x[i]+0.08, y[i])) 21 22 plt.title('学号3140',fontsize=20) 23 plt.show() #展示箱型图
1 # 代码3-3 捞起生鱼片的季度销售情况 2 import pandas as pd 3 import numpy as np 4 catering_sale = 'E:/anaconda3/jupyterFile/数据分析/catering_fish_congee.xls' # 餐饮数据 5 data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引 6 7 bins = [0,500,1000,1500,2000,2500,3000,3500,4000] 8 labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)', 9 '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] 10 11 data['sale分层'] = pd.cut(data.sale, bins, labels=labels) # cut 分层标记 12 print(data) 13 aggResult = data.groupby(by=['sale分层'])['sale'].agg([('sale', np.size)]) # groupby 分组(根据sale分层来分组) 14 print(aggResult) 15 pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100 16 print(pAggResult) 17 18 import matplotlib.pyplot as plt 19 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 20 pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图 21 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 22 plt.title('季度销售额频率分布直方图 学号3140',fontsize=20) 23 plt.show()
1 # 不同菜品在某段时间的销售量分布情况 2 3 catering_dish_profit = 'E:/anaconda3/jupyterFile/数据分析/data/catering_dish_profit.xls' # 餐饮数据 4 data = pd.read_excel(catering_dish_profit) # 读取数据 5 print(data) 6 # 绘制饼图 7 x = data['盈利'] 8 labels = data['菜品名'] 9 10 plt.figure(figsize=(8,6)) # 设置画布大小 11 plt.pie(x,labels = labels) # 绘制饼图 12 plt.title('菜品销售量分布(饼图) 学号3140') # 设置标题 13 plt.axis('equal') 14 plt.show()
1 # 绘制条形图 2 x = data['菜品名'] 3 y = data['盈利'] 4 plt.figure(figsize=(8,4)) 5 plt.bar(x,y) 6 plt.rcParams['font.sans-serif'] = 'SimHei' 7 plt.xlabel('菜品') # 设置x轴标题 8 plt.ylabel('销量') # 设置y轴标题 9 plt.title('菜品销售分布(条形图)学号3140') # 设置标题 10 plt.show()
1 # 不同部门各月份的销售对比情况 2 # 部门之间销售金额比较 3 import pandas as pd 4 import matplotlib.pyplot as plt 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 7 8 data = pd.read_excel("E:\\anaconda3\\jupyterFile\\数据分析\\data\\dish_sale.xls") 9 plt.figure(figsize=(8,4)) 10 plt.plot(data['月份'], data['A部门'], color = 'green', label = 'A部门', marker = 'o') 11 plt.plot(data['月份'], data['B部门'], color = 'red', label = 'B部门', marker = 's') 12 plt.plot(data['月份'], data['C部门'], color = 'skyblue', label = 'C部门', marker = 'x') 13 plt.legend() # 显示图例 14 plt.ylabel('销售额(万元)') 15 plt.title('学号3140') 16 plt.show() 17 18 # B部门各年份之间销售今额的比较 19 data = pd.read_excel("E:\\anaconda3\\jupyterFile\\数据分析\\data\\dish_sale_b.xls") 20 plt.figure(figsize=(8,4)) 21 plt.plot(data['月份'], data['2012年'], color = 'green', label = '2012年', marker = 'o') 22 plt.plot(data['月份'], data['2013年'], color = 'red', label = '2013年', marker = 's') 23 plt.plot(data['月份'], data['2014年'], color = 'skyblue', label = '2014年', marker = 'x') 24 plt.legend() # 显示图例 25 plt.ylabel('销售额(万元)') 26 plt.title('学号3140') 27 plt.show()
1 # 3-7 某单位日用电量预测分析 3 import pandas as pd 4 import matplotlib.pyplot as plt 5 6 df_normal = pd.read_csv('E:\\anaconda3\\jupyterFile\\数据分析\\data\\user.csv') 7 plt.figure(figsize=(8,4)) 8 plt.plot(df_normal["Date"],df_normal["Eletricity"]) 9 plt.xlabel("日期") 10 # 设置x轴刻度间隔 11 x_major_locator = plt.MultipleLocator(7) 12 ax = plt.gca() 13 ax.xaxis.set_major_locator(x_major_locator) 14 plt.ylabel("每日电量") 15 plt.title("正常用户电量趋势 学号3140") 16 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 17 # plt.axis('equal') 18 plt.show() 19 20 # 窃电用户用电趋势分析 21 df_steal = pd.read_csv('E:\\anaconda3\\jupyterFile\\数据分析\\data\\Steal user.csv') 22 plt.figure(figsize=(10,9)) 23 plt.plot(df_normal["Date"],df_normal["Eletricity"]) 24 plt.xlabel("日期") 25 plt.ylabel("日期") 26 # 设置x轴刻度间隔 27 x_major_locator = plt.MultipleLocator(7) 28 ax = plt.gca() 29 ax.xaxis.set_major_locator(x_major_locator) 30 plt.title("窃电用户电量趋势 学号3140") 31 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 32 plt.show()
1 # 3-8 菜品盈利数据帕累托图 2 import pandas as pd 3 4 # 初始数据化 5 dish_profit = 'E:\\anaconda3\\jupyterFile\\数据分析\\data\\catering_dish_profit.xls' 6 data = pd.read_excel(dish_profit, index_col='菜品名') # 指定“菜品名”为索引列 7 data = data['盈利'].copy() 8 data.sort_values(ascending=False) 9 10 import matplotlib.pyplot as plt 11 plt.rcParams['font.sans-serif'] = ['SimHei'] 12 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 13 14 plt.figure() 15 data.plot(kind='bar') 16 plt.ylabel('盈利(元)') 17 p = 1.0 * data.cumsum()/data.sum() 18 p.plot(color ='r', secondary_y=True, style='-o', linewidth=2) 19 plt.annotate(format(p[6], '.4%'), xy=(6, p[6]), xytext=(6*0.9, p[6]*0.9), 20 arrowprops = dict(arrowstyle = "->", connectionstyle = "arc3, rad = .2" )) 21 # 添加注释,即85%处的标记。这里包括了指定箭头样式 22 plt.ylabel('盈利(比例)') 23 plt.title('学号3140') 24 plt.show()
1 # 绘制正弦虚线 2 import matplotlib.pyplot as plt #导入图库 3 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 4 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 5 plt.figure(figsize=(7,5)) # 创建图像区域,指定比例 6 import numpy as np 7 x = np.linspace(0, 2*np.pi, 50) # x坐标输入 8 y = np.sin(x) 9 plt.plot(x, y, 'bp--') #控制图形格式为蓝色带星虚线,显示正弦曲线 10 plt.title('学号3140') 11 plt.show()
1 # 绘制饼图 2 import matplotlib.pyplot as plt #导入图库 3 labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' #定义标签 4 sizes = [15, 30, 45, 10] # 每一块的比例 5 colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 每一块的颜色 6 explode = (0, 0.1, 0, 0) # 突出显示,这里仅仅突出显示第二块 7 8 plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) 9 plt.axis('equal') # 显示为圆(避免比例压缩为椭圆) 10 plt.title('学号3140') 11 plt.show()
1 # 二维条形直方图 2 import matplotlib.pyplot as plt #导入图库 3 import numpy as np 4 x = np.random.randn(1000) # 1000个服从正态分布的随机数 5 plt.hist(x, 10) # 分成10组绘制直方图 6 plt.title('学号3140') 7 plt.show()
1 # 箱型图 2 import matplotlib.pyplot as plt #导入图库 3 import pandas as pd 4 import numpy as np 5 x = np.random.randn(1000) # 1000个服从正态分布的随机数 6 D = pd.DataFrame([x, x+1]).T # 构造两列的DataFrame 7 D.plot(kind = 'box') # 调用Series内置的绘图方法画图,用kind参数指定箱型图(box) 8 plt.title('学号3140') 9 plt.show()
1 # 3-20 使用plot(logy=True)函数进行绘图 2 import matplotlib.pyplot as plt #导入图库 3 import pandas as pd 4 import numpy as np 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 7 8 x = pd.Series(np.exp(np.arange(20))) # 原始数据 9 plt.figure(figsize=(8,9)) 10 ax1 = plt.subplot(2, 1, 1) 11 x.plot(label='原始数据图', legend=True) 12 plt.title('学号3140') 13 14 ax1 = plt.subplot(2, 1, 2) 15 x.plot(logy=True, label='对数数据图', legend=True) 16 plt.title('学号3140') 17 plt.show()
1 # 3-21 误差棒图 2 import matplotlib.pyplot as plt #导入图库 3 import pandas as pd 4 import numpy as np 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号 7 8 error = np.random.randn(10) # 定义误差列 9 y = pd.Series(np.sin(np.arange(10))) #均值数据列 10 y.plot(yerr=error) # 绘制误差图 11 plt.title('学号3140') 12 plt.show()
小结
本章从应用的角度出发,从数据质量分析和数据特征分析两个方面对数据进行探索分析,最后介绍了Python常用的数据探索函数及案例。
在数据可视化中,由于我们主要使用pandas作为数据探索和分析工具,因此介绍绘图工具都是matplotlib和pandas结合使用。
标签:10,plt,第三章,探索,学号,绘图,pd,import,data From: https://www.cnblogs.com/hxq----1094552116/p/17154879.html