pandas、matplotlib常用命令(收集整理)
1 import matplotlib.pyplot as plt 2 import pandas as pd 3 import matplotlib as mpl
含有中文无法正常显示,需增加如下代码:
1 mpl.rcParams['font.sans-serif'] = ['SimHei'] 2 plt.rcParams['axes.unicode_minus']=False
读取excel电子表数据(read_excel):
df=pd.read_excel('test.xls') #默认读取文档中的第一个工作表
获取列名和索引(columns 和 index):
1 data1 = df.columns 2 ls1 = df.columns.tolist() #转换成列表 3 print u"获取到所有的值:\n{0}".format(ls1) 4 data2 = df.index 5 ls2 = df.index.tolist()
获取数据行名称(_stat_axis):
ls3 = df.T._stat_axis.values.tolist()
利用 matplotlib 画图:
饼形图:
1 plt.title(u'占比分析饼形图',fontsize=20) #标题 2 3 data = df.groupby(u'产业类型')[u'产业类型'].count() 4 label = data._stat_axis.values.tolist() 5 explode1 = (0, 0, 0,0,0,0,0.75,0) 6 plt.pie(data,explode=explode1,labels=label, autopct="%1.1f%%", shadow=True, startangle=90, radius=10,textprops = {'fontsize':10, 'color':'black'},labeldistance=1.05) 7 8 plt.legend() #显示标签 9 plt.axis("equal") #饼形图为正圆 10 plt.show()
函数:matplotlib.pyplot.pie(x,explode=None,labels=None,colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, data=None)
重要参数详情
x :(每一块)的比例,如果sum(x) > 1会使用sum(x)归一化;
labels :(每一块)饼图外侧显示的说明文字;
colors :list, 设置为各部分染色列表,元素一一对应
explode :(每一块)离开中心距离;
startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;
shadow :在饼图下面画一个阴影。默认值:False,即不画阴影;
labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;
autopct :控制饼图内百分比设置,可以使用format字符串或者format function
'%1.1f'指小数点前后位数(没有用空格补齐);
pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;
radius :控制饼图半径,默认值为1;
counterclock :指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。
wedgeprops :字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={'linewidth':3}设置wedge线宽为3。
textprops :设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。
center :浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。
frame :布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。
rotatelabels :布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。
部分来源于: matplotlib 知识点11:绘制饼图(pie 函数精讲)
线图:
1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 5 t = np.arange(0.0, 4.0, 0.1) 6 s = np.sin(np.pi*t) 7 plt.plot(t, s, 'g:v', label = 'sinx') 8 9 plt.legend() # 显示右上角的那个label,即上面的label = 'sinx' 10 plt.xlabel('time (s)') # 设置x轴的label,pyplot模块提供了很直接的方法,内部也是调用的上面当然讲述的面向对象的方式来设置; 11 plt.ylabel('voltage (mV)') # 设置y轴的label; 12 #plt.xlim(-1,3) # 可以自己设置x轴的坐标的范围哦; 13 #plt.ylim(-1.5,1.5) 14 plt.title('About as simple as it gets, folks') 15 plt.grid(True) # 显示网格; 16 plt.xticks(rotation=45) #X轴文字旋转45° 17 plt.show()
其中
plot() 基本用法:
lot(x, y) # 画出横轴为x与纵轴为y的图,使用默认的线形与颜色;
plot(x, y, 'bo') # 用蓝色,且点的标记用小圆,下面会解释哦
plot(y) # 纵轴用y ,横轴用y的每个元素的坐标,即0,1,2……
plot(y, 'r+') # 如果其中x或y 为2D的,则会用它的相应的每列来表示(注意是每列)
plot(x1, y1, 'g^', x2, y2, 'g-') #可以使用多对的x, y, format 对当作变量的,把它们画一个图里;
对于参数中,常用的format:线的颜色、线的形状、点的标记形状,我们用这三个的时候经常用缩写,它们之间的顺序怎么都可以,如它俩一个意思:’r+–’、’+–r’。如果我们不想缩写的话,可以分别写成如: color=’green’, linestyle=’dashed’, marker=’o’。
- 线的形状:
‘-’ solid line style
‘–’ dashed line style
‘-.’ dash-dot line style
‘:’ dotted line style
- 点的标记:
‘.’ point marker
‘,’ pixel marker
‘o’ circle marker
‘v’ triangle_down marker
‘^’ triangle_up marker
‘<’ triangle_left marker
‘>’ triangle_right marker
‘1’ tri_down marker
‘2’ tri_up marker
‘3’ tri_left marker
‘4’ tri_right marker
‘s’ square marker
‘p’ pentagon marker
‘*’ star marker
‘h’ hexagon1 marker
‘H’ hexagon2 marker
‘+’ plus marker
‘x’ x marker
‘D’ diamond marker
‘d’ thin_diamond marker
‘|’ vline marker
‘_’ hline marker
- 线的颜色:
‘b’ blue
‘g’ green
‘r’ red
‘c’ cyan
‘m’ magenta
‘y’ yellow
‘k’ black
‘w’ white
(2020年8月27日更新)