pandas数据处理

###pandas数据算术运算

pandas元素相加

1
df1+df2

pandsa和series相减

1
df1-s1

apply和applymap

1
2
3
4
5
#apply操作DataFrame的每一列,而applymap操作DataFrame的每一个元素
f1 = lambda x : "%.3f"%x
df1.applymap(f1)
f2 = lambda x:x.max() - x.min()
df1.apply(f2)

pandas数据修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.数据复制-直接赋值
df1 = df.head()
df1.iloc[0,0] #原数据
df.iloc[0,0] = 10 #对应df1的数据也会变化
2.数据复制-copy()函数
df1 = df.head().copy()
df1.iloc[0,0] #原数据
df.iloc[0,0] = 10 #对应df1的数据不会变化
3.行列删除
·删除一列 del df1['sad']
·删除多列 pd.drop(['a','b','c'],axis=1)
·删除一列并赋值 pd.pop()
·删除行 pd.drop(['a','b','c'],axis=0)
4.列增加
·[],列名方式增加多列 df['s1','s2'] =
·loc,不能新增多列 pd.loc[:,'new_column'] =
·insert 在指定位置 df1.insert(4,'ss',np.linspace(0,1,len(train1 )))
5.行增加
·pd.loc[:'new_index'] =

索引顺序调整

1
2
3
4
1.同时调整行和列
reindex(index=,columns=[])
2.单独调整行或列
reindex_axis()

列格式修改

1
astype(dtype.copy=True)

数据排序

1
2
pd.sort_index(axis,ascending=,inplace)
pd.sort_values(by='a',ascending=False,inplace=True)

数据转换

1
2
df2 = df.T
df3 = df.transpose()

重复值

1
2
3
4
1.重复值查看
·df.duplicated() 返回的为布尔值 duplicated(subset = None ,keep='first',inplace=False)
2.删除重复值
drop_duplicates() #默认所有列去重,可以选择指定列

####部分值替换

1
2
3
df1.replace([-99,-100],[NA,0]) #替换多个值为不同值
df1.replace({-99:Na,33:0}) #替换指定数据为指定值
df1.replace([1,2],Na) #替换为同一个值

缺失值处理

1
2
3
4
5
#缺失值确认:isnull、notnull
#缺失值处理:dropna、fillna
df1.dropna() #删除存在Nan的所有行
df1.dropna(axis=1,how="all") #删除所有行数据全为Nan的列
df2.fillna({1:111,4:444}) #传入字典,将第一列和第四列的所有空值都替换成指定的数据