从网上爬取的数据很乱。我们需要可视化数据。除了数据处理,pandas还可以进行数据可视化。这里简单介绍一下pandas绘图的常用方法。图形的一些API:由于数据可视化的库很多,比如matplotlib、seaborn、pyecharts等,所以使用pandas的plots并不多。下面是一个简单的演示。内容:直方图饼图折线图散点图直方图直方图普通柱状图首先我们打开excel数据文件,如下图所示:字段:Major;Number:对应专业学生人数,根据两列数据绘制简单的柱状图:='Number',inplace=True,ascending=False)data.plot.bar(x='字段',y='Number',title='全国学生字段')plt.tight_layout()plt.show()解释:students.xlsx:对应的数据文件;data.sort_values(by='Number',inplace=True,ascending=False):按照数字的个数排序,inplace=True:修改当前数据文件,不生成新的数据文件,ascending=False:排序按降序排列;bar()函数绘制条形图,x,分别指定y,x轴和y轴的顺序;tight_layout()使整个图紧凑显示,否则x轴上的文字会因为太长而被遮挡;结果如下:分组柱状图首先,我们还是看数据文件:students02。xlsx给出了2016年和2017年的学生人数,因此考虑绘制分组直方图:True,ascending=False)data.plot.bar(x='Field',y=['2016','2017'],color=['red','orange'])plt.title('全国学生数',fontsize=16,fontweight='bold')plt.xlabel('Field',fontweight='bold')plt.ylabel('Number',fontweight='bold')#x轴刻度偏转ax=plt.gca()ax.set_xticklabels(data['Field'],rotation=45,ha='right')print(data)f=plt.gcf()f.subplots_adjust(left=0.2,bottom=0.4)#plt.tight_layout()plt.show()说明:bar()函数绘制条形图,分别指定x和y,x和y轴系列,但由于分组柱形图的y轴不再是一个系列,而是两个(或多个)系列的列表;plt.title()设置标题,当然也可以在bar()函数中设置;plt.gca()获取x轴上的文字,在下一列重新设置x轴上的文字,将文字旋转45°,ha='right':以右点为中心水平对齐;plt.gcf()gets绘制的图形对象,设置空白区域,left=0.2(左边20%空白),bottom=0.4,底部40%空白;结果如下:有时叠加柱形图中可能有两组以上的数据,需要观察多组数据的比例,可以使用叠加柱形图:importmatplotlib.pyplotaspltimportpandasaspddata=pd.read_excel('./excelfile/Users.xlsx')#这里数据文件将不再显示data['total']=data['Oct']+data['Nov']+data['Dec']data.sort_values(by='total',inplace=True,ascending=False)#data.plot.bar(x='Name',y=['Oct','Nov','Dec'],stacked=True,title='UsersBehavior')verticaldata.plot.barh(x='Name',y=['Oct','Nov','Dec'],stacked=True,title='UsersBehavior')#如果需要横向改变顺序,ascending=trueplt.tight_layout()plt.show()的结果如下图所示:饼图首先我们来看数据文件,如下图:2016年,2017年不同国家学生人数排名(rank);从中绘制饼图:importpandasaspdimportmatplotlib.pyplotaspltplt.figure(figsize=(12,8),dpi=100)students=pd.read_excel('./bin_Students.xlsx',index_col='From')students['2017'].plot.pie(fontsize=8,counterclock=False)plt.title('留学生来源',fontsize=16,fontweight='bold')plt.ylabel('2017',fontsize=12,fontweight='bold')plt.show()解释:figsize:设置图片大小,dpi:设置图片分辨率;pie()function绘制饼图的api函数,counterclock=False:该参数设置饼图比例元素的环绕方向,false用于逆时针发送;结果如下图所示:由于文件中数据太多,这里没有显示折线图;换句话说就是四个区域不同周期的销售状态绘制代码:importpandasaspdimportmatplotlib.pyplotaspltdata=pd.read_excel('./excelfile/Orders.xlsx',index_col='Week')数据。plot.area(y=['Accessories','Bikes','Clothing','Components'])#叠加区域图plt.title('SaleWeekTrend',fontsize=14,fontweight='bold')plt.ylabel('Total',fontsize=10,fontweight='bold')plt.xticks(data.index,fontsize=5)plt.show()结果如下:由于后面较少使用集中图形,所以数据文件这里就不展示了,直接上代码:scatterplotimportmatplotlib.pyplotaspltimportpandasaspddata=pd.read_excel('./excelfile/home_data.xlsx',index_col='id')data.plot.scatter(x='sqft_living',y='price')#房屋面积价格plt.show()结果如下:该图绘制了某区域房价与房屋面积的分布关系;histogramimportmatplotlib.pyplotaspltimportpandasaspddata=pd.read_excel('./excelfile/home_data.xlsx')data['sqft_living'].plot.hist(bins=60)#bins代表列数plt.xticks(range(0,max(data['sqft_living']),500),rotation=90,fontsize=6)plt.show()的结果如下:这张图显示了某个区域的数据表,结合不同的实际情况,画出不同的图形来达到我们的目的。
