柱状图,叠加柱状图,饼图,折线图,叠加区域图,散点图,直方图,密度图
1.柱状图
基本柱状图
import pandas as pd
import xlrd
import matplotlib.pyplot as plt
students=pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/Students.xlsx')
students.sort_values(by='Number',ascending=False,inplace=True)#排完序后,生成一个新的DataFrame,inplace替代
print(students)
students.plot.bar(x='Field',y='Number',color='orange',title='International Students')
#plt.bar(students.Field,students.Number,color='orange')
plt.show()
美化柱状图
plt.bar(students.Field,students.Number,color='orange')
#横坐标刻度标签旋转45
plt.xticks(students.Field,rotation=45)
#横纵轴标签
plt.xlabel('Field')
plt.ylabel('Number')
#设置标题
plt.title('International Students',size=16)
plt.show()
分组柱状图&图标优化
import pandas as pd
import xlrd
import matplotlib.pyplot as plt
students=pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/Students1.xlsx')
students.sort_values(by='2017',inplace=True,ascending=False)
students.plot.bar(x='Field',y=['2016','2017'],color=['orange','red'])
#这里不能调整字号
plt.title('International Student by Field',fontsize=16,fontweight='bold')
plt.xlabel('Field',fontweight='bold')
plt.ylabel('Number',fontweight='bold')
ax=plt.gca()#获得当前轴
ax.set_xticklabels(students['Field'],rotation=45,ha='right')#ha 以右边的点旋转
f=plt.gcf()#获得当前figure
f.subplots_adjust(left=0.2,bottom=0.42)#调整图形空白部分,左边为20%,下面为42%
plt.show()
**~~注意:此时横坐标轴旋转不能用plt.xtick(students.Field,rotation=45),因为此处是dataframe对象调用的plot,而上面是plt。**
叠加柱状图
import pandas as pd
import xlrd
import matplotlib.pyplot as plt
users=pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/Users.xlsx')
users.plot.bar(x='Name',y=['Oct','Nov','Dec'],stacked=True)#stacked是否折叠,默认false
users['Total']=users['Oct']+users['Nov']+users['Dec']#排序准备工作
users.sort_values(by='Total',inplace=True,ascending=False)
plt.show()
"绘制水平柱状图"
users.plot.barh(x='Name',y=['Oct','Nov','Dec'],stacked=True)
plt.title('User Behavior',fontsize=16,fontweight='bold')
plt.show()
2.饼图
import pandas as pd
import xlrd
import matplotlib.pyplot as plt
students=pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/Students1.xlsx')
students.index=students['Field']#将Field设置为ID
students['2017'].sort_values().plot.pie(fontsize=8,startangle=-270)
#pandas画出的饼图是逆时针,excel是顺时针,值升序,大的在后面,在调整起始角度,就和excel一样了
plt.title('student',fontsize=16,fontweight='bold')
plt.ylabel('2017',fontsize=12,fontweight='bold')
plt.show()
3.折线图
import pandas as pd
import matplotlib.pyplot as plt
weeks = pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/Weeks.xlsx', index_col='Week')
# weeks.plot(y=['Accessories', 'Bikes', 'Clothing', 'Components'])#折线图,图一
weeks.plot.area(y=['Accessories', 'Bikes', 'Clothing', 'Components'])#叠加区域图,图2
plt.title('Sales Trends', fontsize=16, fontweight='bold')
plt.xticks(weeks.index, fontsize=8)
plt.show()
叠加区域图也是将四个值加起来,可以看趋势。与叠加柱状图类似,柱状图不可看趋势。
4.散点图
ruo’y
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.max_columns=777#是为了显示所有的列
homes = pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/home_data.xlsx')
homes.head()
homes.plot.scatter(x='sqft_living',y='price')
plt.show()
5. 直方图
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.max_columns=777
homes = pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/home_data.xlsx')
homes.sqft_living.plot.hist(bins=100)#100区间画一个小条
plt.xticks(range(0,max(homes.sqft_living),500),fontsize=8,rotation=90)
plt.show()
注意:plt.画图函数,xlable,ylable,dataframe.画图函数,xxticks
6.密度图
密度图实际上就是概率上的密度函数,可以看出多大可能做出什么决策。
注意,若出现
需要重新安装numpy包参考链接
import pandas as pd
import scipy
import matplotlib.pyplot as plt
pd.options.display.max_columns=777
homes = pd.read_excel('E:/ruanjianDM/pycharm+DM/pandas-Excel/home_data.xlsx')
homes.sqft_living.plot.kde()
plt.xticks(range(0,max(homes.sqft_living),500),fontsize=8,rotation=90)
plt.show()