python中常用与数据分析的函数
pandas库
-
data.describe() 方法
返回一个表格用于描述这个 DataFrame中每一列数据的信息,常用于数据预处理。 -
pd.to_datetime( )
获取指定的日期和时间
完成了时间的设置之后,便可以使用.dt.year和.dt.month和.dt.day来获取月份和日期 -
.drop方法
删除选定的行或列
方法:.drop(labels=None, axis=0, index=None, columns=None,level=None, inplace=False, errors=‘raise’)
labels:一个字符或者数值,加上axis ,表示带label标识的行或者列;如 (labels=‘A’, axis=1) 表示A列
axis:axis=0表示行,axis=1表示列
columns:列名
index:表示dataframe的index, 如index=1, index=a
inplace:True表示删除某行后原dataframe变化,False不改变原始dataframe -
.to_csv方法
.to_csv()
路径 path_or_buf:
dt.to_csv(‘Result.csv’) #相对位置,保存在getwcd()获得的路径下
dt.to_csv(‘C:/Users/think/Desktop/Result.csv’) #绝对位置
分隔符 sep :
dt.to_csv(‘C:/Users/think/Desktop/Result.csv’,sep=’?’)
#使用?分隔需要保存的数据,如果不写,默认是,
替换空值 na_rep:
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv’,na_rep=‘NA’)
#确实值保存为NA,如果不写,默认是空
格式 float_format:
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv’,float_format=’%.2f’)
#保留两位小数
是否保留某列数据 cols:
dt.to_csv(‘C:/Users/think/Desktop/Result.csv’,columns=[‘name’])
#保存索引列和name列
是否保留列名 header:
dt.to_csv(‘C:/Users/think/Desktop/Result.csv’,header=0)
#不保存列名
是否保留行索引 index:
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv’,index=0)
#不保存行索引
注:带有中文的文件要加encoding='gbk’编码 -
.unique()方法
用于统计DataFrame中非重复的值,返回一个ndarray结构 -
.tolist()方法
将数组或者矩阵转换成列表 -
. sort_values()方法
用于在DataFrame中排列的函数,既可以根据列数据,也可根据行数据排序。
注意:必须指定by参数,即必须指定哪几行或哪几列;无法根据index名和columns名排序(由.sort_index()执行)
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’)
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
by:str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名”。
ascending:布尔型,True则升序,如果by=[‘列名1’,‘列名2’],则该参数可以是[True, False],即第一字段升序,第二个降序。
inplace:布尔型,是否用排序后的数据框替换现有的数据框。
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。 -
数据分组形成透视表
使用函数data.groupby(by=[“索引名称”])(可以指定多个索引,data是一个DataFrame数据结构)
返回一个Groupby对象,还没有进行任何的运算(不能直接输出)可以通过 .describe() 方法进行查看。
查看发现生成的表是有多层行索引的汇总表(行索引的层数取决于在by中指定的索引个数),可以对该表使用函数进行运算:
而后可以使用.unstack()方法将某一级行索引转换为列索引,使表格展开便于处理
-
函数形成透视表
使用方法或函数均可
DataFrame.pivot_table(data, values=None, index=None, columns=None,
aggfunc=‘mean’, fill_value=None, margins=False,
dropna=True, margins_name=‘All’)
index : 透视表的行索引,必要参数,如果我们想要设置多层次索引,使用列表[ ]
values : 对目标数据进行筛选,默认是全部数据,我们可通过values参数设置我们想要展示的数据列
columns :透视表的列索引,非必要参数,同index使用方式一样
aggfunc :对数据聚合时进行的函数操作,默认是求平均值,也可以sum、count等
margins :额外列,在最边上,默认是对行列求和
fill_value : 对于空值进行填充
dropna : 默认开启去重
matplotlib.pyplot库
-
文本显示函数
plt.xlabel():对x轴增加文本标签
plt.ylabel():同理
plt.title(): 对图形整体增加文本标签
plt.text(): 在任意位置增加文本
plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dict) 在图形中增加带箭头的注解。s表示要注解的字符串是什么,xy对应箭 头所在的位置,xytext对应文本所在位置,arrowprops定义显示的属性 -
绘图函数
plt.plot(x,y , fmt) :绘制坐标图
plt.boxplot(data, notch, position): 绘制箱形图
plt.bar(left, height, width, bottom) : 绘制条形图
plt.barh(width, bottom, left, height): 绘制横向条形图
plt.polar(theta, r): 绘制极坐标图
plt.pie(data, explode) : 绘制饼图
plt.scatter(x, y) :绘制散点图
plt.hist(x, bings, normed) : 绘制直方图 -
字体设置
画图一定要设置字体,否则中文将无法显示,运用函数:
plt.rcParams[‘font.sans-serif’]=[‘SimHei’]
将字体设置为微软雅黑 -
一次性绘制多个图像
plt.subplot(3,2,4):
分成3行2列,共6个绘图区域,在第4个区域绘图。排序为行优先。也可 plt.subplot(324),将逗号省略。 -
设置x轴,y轴的起始终止范围
plt.axis([-1, 10, 0, 6]) :
x轴起始于-1,终止于10 ,y轴起始于0,终止于6 -
显示图例函数
plt.legend() -
绘制柱状图
运用函数
plt.bar(x, height, width=0.8, bottom=None, , align=‘center’, data=None, kwargs*)
x表示有多少根柱子
-
绘制折线图
函数plt.plot(x, y) -
绘制散点图(气泡图)
函数plt.scatter(x, y, s, c, label, alpha)
x:横坐标轴数据
y:纵坐标轴数据
s:对应各个气泡的大小
c:对应各个气泡的颜色
label:数据标签
alpha:气泡透明度(0-1)
其他函数
- round()函数
第一个参数是输入的变量,第二个参数是要保留的位数
- 热力图的绘制(Seaborn库)
先import seaborn as sns
使用函数:
Seaborn.heatmap
(data, vmin=None, vmax=None, camp=None,center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None, linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels=’auto’ ,yticklabels=’auto’, mask=None, ax=None, kwargs)
data: 矩阵数据集,可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会分别对应到heatmap的columns和rows,即pt.index是热力图的行标,pt.columns是热力图的列标。
vmin,vmax:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定。
camp:从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表,如果没有提供,默认值将取决于是否设置了center。
center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变 。
robust:默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定。
annot(annotate的缩写):默认取值False;如果是True,在热力图每个方格写入数据;如果是矩阵,在热力图每个方格写入该矩阵对应位置数据
fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字 。
annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置。
其他参数见参考文章
设置完成后,再使用plt.show()函数进行展示
- .tolist() 方法
将数组、矩阵、等对象转换为列表
常用结构.tolist()[0],将dataframe中通过索引而得出的某个具体元素,将其从object格式中拿出来进行使用
- 归一化函数:preprocessing.minmax_scale(X)
使用前先from sklearn import preprocessing,X通常是DataFrame中的某一列。函数返回一个ndarray结构,可以对其处理再替代原有的值,或新生成一个DataFrame。
函数默认将数据中的最大值设为 1