本次选用每年的一个乘客数据进行数据处理与可视化,更加了解pandas与numpy的使用学会对数据的转化处理,最后完成可视化。
数据导入
使用pandas的read_excel()方法读入数据格式为.xlsx的表格(如果格式为.csv就使用read_csv()并传入参数)
读取表格样式
1. import pandas as pd# 数据处理需要的库 2. import matplotlib.pyplot as plt# 绘图需要的库 3. plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 4. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 5. data=pd.read_excel(r'实验1data.xlsx')# 读入数据的路径 实验1data.xlsx这是我的当前路径 6. # 你可以改成你的相对(相对当前文件 文件夹名称/data.xlsx)或者绝对路径(D:/use/../data.xlsx) 7. data# 查看数据
1. data=data.set_index('year')#设置year为index 2. data 3. # data['行求和']=data.sum(axis=1) 4. # data
1. # 对年份求和 2. data['每年求和']=data.sum(axis=1) 3. data
1. data.loc['每月求和']=data.apply(lambda x:x.sum())#对每月进行求和 2. data2=data.loc['每月求和']# 取出求和后的字段 3. data2=pd.DataFrame(data2)# 转化为DataFrame形式 4. data2=data2[:-1]# 取最后一列所以索引为-1 5. data2
pandas数据统计
完成以上对每年以及每月的数据统计后,进行下一步可视化的工作
可视化
1. data2.plot.box(title="Box Chart") 2. plt.grid(linestyle="--", alpha=0.3) 3. plt.show()
每年数据的统计
1. data1=data['每年求和'] 2. data1 3. da=pd.DataFrame(data1) 4. da
箱线图
1. da.plot.box(title="Box Chart") 2. plt.grid(linestyle="--", alpha=0.3) 3. plt.show()
1. import numpy as np 2. x=np.array(da.index) 3. y=np.array(da['每年求和']) 4. print(x) 5. print(y)
1. import numpy as np 2. x=np.array(da.index) 3. y=np.array(da['每年求和']) 4. data4={ 5. 'year':x, 6. 'total':y 7. } 8. data4=pd.DataFrame(data4) 9. data4=data4[:-1] 10. data4
将年和月数据转化成一个新的DataFrame
1. import matplotlib.pyplot as plt 2. import pandas as pd 3. GDP_data = data4 4. #设置绘图风格 5. plt.style.use('ggplot') 6. #处理中文乱码 7. plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 8. #绘制条形图 9. plt.figure(figsize=(10,10)) 10. plt.rcParams['axes.facecolor']='snow' 11. plt.bar(x = range(GDP_data.shape[0]), #指定条形图x轴的刻度值(有的是用left,有的要用x) 12. height = GDP_data.total, #指定条形图y轴的数值(python3.7不能用y,而应该用height) 13. tick_label = GDP_data.year, #指定条形图x轴的刻度标签 14. color = 'skyblue', #指定条形图的填充色 15. ) 16. # 添加x轴的标签 17. plt.xlabel('年份(年)') 18. #添加y轴的标签 19. plt.ylabel('乘客总数量(人次)') 20. #添加条形图的标题 21. plt.title('1949-1960年乘客数据条形图') 22. #为每个条形图添加数值标签 23. for x,y in enumerate(GDP_data.total): 24. plt.text(x,y+0.1,"%s"%round(y,1),ha='center') #round(y,1)是将y值四舍五入到一个小数位 25. #显示图形 26. plt.show()
1. import numpy as np 2. data2['月求和']=data2['列求和'] 3. x=np.array(data2.index) 4. y=np.array(data2['月求和']) 5. data5={ 6. 'Month':x, 7. 'total':y 8. } 9. data5=pd.DataFrame(data5) 10. data5
每月数据可视化
1. import matplotlib.pyplot as plt 2. import pandas as pd 3. GDP_data = data5 4. #设置绘图风格 5. plt.style.use('ggplot') 6. #处理中文乱码 7. plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 8. #绘制条形图 9. plt.figure(figsize=(10,10)) 10. plt.rcParams['axes.facecolor']='snow' 11. plt.bar(x = range(GDP_data.shape[0]), #指定条形图x轴的刻度值(有的是用left,有的要用x) 12. height = GDP_data.total, #指定条形图y轴的数值(python3.7不能用y,而应该用height) 13. tick_label = GDP_data.year, #指定条形图x轴的刻度标签 14. color = 'pink', #指定条形图的填充色 15. ) 16. #添加y轴的标签 17. plt.ylabel('乘客总数量(人次)') 18. # 添加x轴的标签 19. plt.xlabel('月份(月)') 20. #添加条形图的标题 21. plt.title('1949-1960年每月乘客数据条形图') 22. #为每个条形图添加数值标签 23. for x,y in enumerate(GDP_data.total): 24. plt.text(x,y+0.1,"%s"%round(y,1),ha='center') #round(y,1)是将y值四舍五入到一个小数位 25. #显示图形 26. plt.show()
总结
使用pandas导入数据,对数据进行合理的处理取出我们所要分析的字段进行可视化工作,pandas与numpy是数据处理必不可少的两个重要的库函数,进行深入的学习能提升自我的技术水平,也欢迎大家指出我的不足,谦受益!