- 数值替换
- 数值排序
- 数值排名
- 数值删除
- 数值计数
- 唯一值获取
- 数值查找
- 区间划分
- 行列操作
数值替换
- replace
replace(A,B)表示将A替换成B。
df['年龄'].replace(240,33)
df.replace(np.NaN,0)——对全表的缺失值进行替换,相当于fillna
df.replace([A,B],C) df['年龄'].replace([240,260],33)
df.replace({'A':'a', 'B','b'}) df.replace({240: 33, 260: 34})
数值排序
- sort_values
df.sort_values(by = ['销售ID'], ascending = False) by——指明排序的列名,默认为升序,ascending=False为降序
df.sort_values(by=['col1', 'col2'], ascending=[True , False]) 先按col1为升序,再按col2为降序排列
%注意:na_position ——可以设置缺失值的显示位置,默认在最后,可以放到前面 eg:df.sort_values(by = ['销售ID'], na_position='first')
数值排名
- rank
主要有两个参数:ascending——升序/降序; method——排序方式(average,first,min,max)
eg:df['销售ID'].rank(method = 'min')
数值删除
- drop
删除列:df.drop(['销售ID','成交时间'],axis=1) ——待删除列名,参数axis
df.drop(df.columns[ [4,5] ] ,axis = 1) ——待删除列的位置,参数axis
df.drop(columns = ['销售ID', '成交时间']) ——将列名以列表形式传给columns参数,不需要axis
删除行:df.drop(['0a','1b'],axis=0) ——待删除行名,参数axis
df.drop(df.index[ [0,1] ] ,axis = 0) ——待删除行的位置,参数axis
df.drop(index= ['0a', '1b']) ——将行名以列表形式传给index参数,不需要axis
删除特定行:df[df['年龄']<40] ——通过过滤, 将不需要的过滤出去
数值计数
- value_counts
df['销售ID'].value_counts() ——绝对次数
df['销售ID'].value_counts(normalize = True, sort = False) ——normalize次数占比,sort=False不按计数值降序排列
唯一值获取
- unique
df['销售ID'].unique()
数值查找
- isin
df['年龄'].isin([31,21])
区间切分
- cut 、 qcut
pd.cut(df['年龄'], 3 ,bins = [0,3,6,10]) ——bins用来指明区分区间
pd.qcut(df['年龄'], 3) ——不需要指明区间,只需要设置切为几份
行列操作
- 插入新的行/列
行:没有插入新行的操作,一般将待插入行当做一个新的表,然后在纵向上拼接
列:insert() 、 以索引的方式直接插入
df.insert(2,"商品类别", ['cat01', 'cat02',……]) ——插入的位置,插入后为第2列
df["商品类别"] = ['cat01', 'cat02',……]
- 行列互换 转置 df.T
- stack()——将列索引转换成行索引 (宽表变长表)
#先将不转换的列设置为索引
df.set_index(['company','name'])
#调用stack
df.set_index(['company','name']).stack()
#重置索引
df.set_index(['company','name']).stack().reset_index()
- melt()——将列索引转换成行索引 (宽表变长表)
df.melt(id_vars=['company','name'], var_name = 'Year', value_name = 'Sale')
#id_vars转换时不变的列,var_name列索引转换为“行索引”以后对应的列名,value_name目前值所对应的列名
- 长表变宽表,透视表功能