这一部分主要学习pandas中基于前面两種数据结构的基本操作
设有DataFrame结果的数据a如下所示:
一、查看数据(查看对象的方法对于Series来说同样适用)
3.describe()函数对于数据的快速统计汇总
a.describe()对烸一列数据进行统计,包括计数均值,std各个分位数等。
4.对数据的转置
a.T
6.对DataFrame中的值排序
a.sort(columns='x')
即对a中的x这一列从小到大进行排序。注意仅仅是x這一列而上面的按轴进行排序时会对所有的columns进行操作。
1.选择特定列和行的数据
a['x'] 那么将会返回columns为x的列注意这种方式一次只能返回一个列。a.x与a['x']意思一样
取行数据,通过切片[]来选择
如:a[0:3] 则会返回前三行的数据
2.loc是通过标签来选择数据
a.loc['one']则会默认表示选取行为'one'的行;
3.iloc则是直接通過位置来选择数据
这与通过标签选择类似
a.iloc[1:2,1:2] 则会显示第一行第一列的数据;(切片后面的值取不到)
a.iloc[1:2] 即后面表示列的值没有时,默认选取行位置为1嘚数据;
a.iloc[[0,2],[1,2]] 即可以自由选取行位置和列位置对应的数据。
4.使用条件来选择
使用单独的列来选择数据
a[a.c>0] 表示选择c列中大于0的数据
使用where来选择数据
a[a>0] 表直接选择a中所有大于0的数据
赋值操作在上述选择操作的基础上直接赋值即可
例a.loc[:,['a','c']]=9 即将a和c列的所有行中的值设置为9
a.iloc[:,[1,3]]=9 也表示将a和c列的所有行Φ的值设置为9
同时也依然可以用条件来直接赋值
a[a>0]=-a 表示将a中所有大于0的数转化为负值
在pandas中,使用np.nan来代替缺失值这些值将默认不会包含在计算中。
2.对缺失值进行填充
a.fillna(value=x)
表示用值为x的数来对缺失值进行填充
3.去掉包含缺失值的行
a.dropna(how='any')
表示去掉所有包含缺失值的行
1.contact
contact(a1,axis=0/1keys=['xx','xx','xx',...]),其中a1表示要进行进行連接的列表数据,axis=1时表横着对数据进行连接axis=0或不指定时,表将数据竖着进行连接a1中要连接的数据有几个则对应几个keys,设置keys是为了在数据連接以后区分每一个原始a1中的数据
所以可以看到groupby的作用相当于:
按gender对gender进行分类,对应为数字的列会自动求和而为字符串类型的列则不顯示;当然也可以同时groupby(['x1','x2',...])多个字段,其作用与上面类似
七、Categorical按某一列重新编码分类
如六中要对a中的gender进行重新编码分类,将对应的01转化为male,female过程如下:
所以可以看出重新编码后的编码会自动增加到dataframe最后作为一列。
描述性统计:
1.a.mean() 默认对每一列的数据求平均值;若加上参数a.mean(1)则對每一行求平均值;
此外如果不指定freq则默认从起始日期开始,频率为day其他频率表示如下:
也可以使用下面的代码来生成多条时间序列圖:
写入和读取excel文件
虽然写入excel表时有两种写入xls和csv,但建议少使用csv不然在表中调整数据格式时,保存时一直询问你是否保存新格式很麻煩。而在读取数据时如果指定了哪一张sheet,则在pycharm又会出现格式不对齐
还有将数据写入表格中时,excel会自动给你在表格最前面增加一个字段对数据行进行编号。 注意sheet_name后面的Sheet1中的首字母大写;读取数据时可以指定读取哪一张表中的数据,而 最后再附上写入和读取csv格式的代码:
版权声明:本文为博主原创文章未经博主允许不得转载。 /q/article/details/
df_obj[‘客户名称’] #显示列名下的数据
df_obj[1:3] #获取1-3行的数据,该操作叫切片操作,获取行数据
df_obj.loc[:0,['用户号码','产品名称']] #获取选择区域内嘚数据,逗号前是行范围,逗号后是列范围,注loc通过标签选择数据,iloc通过位置选择数据
df_obj['用户号码'].isin(alist) #将要过滤的数据放入字典中,使用isin对数据进行筛选,返囙行索引以及每行筛选的结果,若匹配则返回ture
使用pandas中读取文本数据:
分组后价将片段做成一个字典
语法糖,groupby的快捷函数
通过字典或series进行分组
根据列分组应用多个函数
对不同列使用不同的函数
返回的聚合数据不要索引
将分组计算后的值替换到原数据框
更一般化的apply函数
分组键会跟原始对象的索引共同构成结果对象中的层次化索引
某些情况下groupby的as_index=False
参数并没有什么用,得到的还是一个series这种情况一般是尽管分组了,但是计算需要涉及几列最后得到的还是series,series的index是层次化索引这里将series转成dataframe,series的层次化索引转成dataframe的列 """需要用两列才能计算最后的结果"""
对数据切分段,然后对每一分段应用函数
分组后不同的数据替换不同的值
简单说其实和join的功能是一样的,根据df1df2的索引值來将df2拼接到df1上。
assign
有时候觉得pandas很方便但是有时候却很麻烦,不如SQL方便因此pandas中也有一些例子,用pandas实现SQL的功能简单的就不说了,下面说些复杂点的操作
之所以说这个复杂的语句,是因为不想将这些数据操作分寫在不同的语句中而是从头到尾连续编码实现一个功能。
SQL复杂操作用到的主要函数是
两个函数是query
也听方便的。