0%

pandas复习

pandas复习

文件操作

对csv文件的读取

1
fr=read_csv(filename,header=None,names=None);

names就是每一列的名字,定义为None就会没有给他初始名字,那么每一行列的初始值就是从0开始的数字。

也可以初始化一个字符串列表,然后names=这个列表就可以有初始名字了

如果不打后面那两个东西的话,那么检索值就是csv文件中的东西

建立一个csv文件

1
dataSet.to_csv("xxx.csv",index=False)

index表示要不要在行前面加1,2,3…

查看

1
2
3
4
5
dataSet.head()    #返回前五行的东西
dataSet.head(x) #返回前x行的东西
dataSet.tail() 和dataSet.tail(x) #和上面类似
dataSet[x:y] #返回第x行到用y-1行的东西
dataSet.shape[0] #返回行数

1
2
3
4
5
6
dataSet[x]   #返回第x列的东西
dataSet[x][a:b] #后面可以跟切片,如前返回x列的a到b-1行的东西
dataSet[x].str[:y] #返回第x列每行的前y个字符
dataSet.shape[1] #返回列数
dataSet[列名]
dataSet[[列名1,列名2]]

其他

iloc

1
2
3
4
5
dataSet.iloc[x]   #返回第x行的数据,相当于dataSet[x:x+1]
dataSet.iloc[x,:] #和上面相同
dataSet.iloc['index'] #按照index索引选取数据
dataSet.iloc[x,y] #选取(x,y)的数据,x,y只能是坐标
str(dataSet.iloc[x,i])=='nan' #判断这一位是不是缺失值,不知道为什么不能直接等于nan

loc

1
dataSet.loc[(dataSet[inx]> Q3 + 1.5 * IQR),inx]=None

loc和iloc类似,只是维度可以用检索值表示

at和ix

和上面两个类似,不过at好像只能查询。

而ix,如果在python里面用了ix,pycharm会报错说:强烈建议不要用ix

以上都可以用切片操作

info

1
dataSet.info()    #返回行数列数和内存信息

describe

1
dataSet[0:4].describe()

.describe可以在上面“查看”的返回后加,可以统计count(总数),unique(类别),top(出现最多的类别),freq(出现最多的频率)

不过describe只会竖着统计

count

1
2
dataSet[x:y].count()   #返回每列x到y-1行非空个数
dataSet.count() #返回每列非空个数

value_counts()

1
2
dataSetO['Survived'].value_counts('1.0')   #返回1.0出现的频率
dataSetO['Survived'].value_counts('1.0') #返回1.0出现的次数

isnull()、notnull()

给每个位置判断是不是缺失值,如果是返回True

keys()

返回列的检索值

运算

1
2
3
4
5
6
dataSet.mean():返回所有列的均值
dataSet.corr():返回列与列之间的相关系数
dataSet.max():返回每一列的最大值
dataSet.min():返回每一列的最小值
dataSet.median():返回每一列的中位数
dataSet.std():返回每一列的标准差

操作

to_frame()

将series变为frame

shift

1
dataSet.shift(x)   #把数据的0到x-1行清空,但是行的检索值保留

行列的合并

1
2
3
data=dataSet.append(testSet)   #将testSet的行添加到dataSet的末尾
data=concat([dataSet,testSet],axis=1) #将testSet的列添加到dataSet的末尾
dataSet.index=date_range('2019/10/29',periods=dataSet.shape[0]) #把行索引改为从日期2019-10-29开始向后推

丢弃

1
2
3
dataSet.drop("index"或序号,axis=01)   #删除,0是行,1是列
#如果是直接这样的话,因为index还在,会显示空行
dataSet.dropna(axis=01,how="any""all",inplace="True""False")#any是当有缺失值时,all是当全为缺失值时,inplace表示是在当前数据改,还是copy一份到新的数据

改名或index

1
2
dataSet.columns=['a','b','c','d']    #改列名
dataSet.reindex(range(dataSet.shape[0]))

排序

1
2
3
data=dataSet.sort_values(1)   #按第一列排序,默认升序
data=dataSet.sort_values(1,ascending=False) #按第一列排序,false表示降序
data=dataSet.sort_values([1,2],ascending=[True,False]) #以第一列升序未第一关键字,第二列降序未第二关键字排序

groupby

1
2
data=dataSet.groupby(1)   #返回以第一列为分组的groupby对象
data=dataSet.groupby([1,2]) #返回以第1,2列为分组的groupby对象

groupby对象能干什么

可以求和,求最大值等等

image-20191029170653565