mean()平均值 median()中位数 max()最大值 min()最小值 sum()求和 std()标准差
Series类型独有的方法: argmax()最大值的位置 argmin()最小值的位置
Pandas中describe()函数
count:数量统计,此列共有多少有效值
unipue:不同的值有多少个
std:标准差
min:最小值
25%:四分之一分位数
50%:二分之一分位数
75%:四分之三分位数
max:最大值
mean:均值
head前几行 tail 后几行
value_counts()
value_counts()是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。
value_counts()是Series拥有的方法,一般在DataFrame中使用时,需要指定对哪一列或行使用
users.age.value_counts()
Series排序
df["age"].sort_values(ascending = False)
agg
s=users.groupby(by=['occupation',]).age.agg(["max","min","mean"])
s=users.groupby(by=['occupation',]).agg({"age":["max","min","mean"]})
行列调换
df.stack(level=0)
df.unstack(level=-1)
map
# 单列
df1["Mjob"].map(lambda x: x.capitalize())
apply
# 两列相加 单列或者多列
df[['data1','data2']].apply(lambda x : x.sum(), axis = 1)
applymap
# 对整个DataFrame
df.applymap(函数)
set_index
把某一列设置为索引 可以设置复合索引
DataFrame.set_index(keys,drop=True,append=False,inplace=False, verify_integrity=False)
drop:默认为true,表示是否删除列作为新索引。
append:是否增加列到原来的索引上。
inplace:是否创建一个新的dataframe
# data
a b c d
0 bar one z 1.0
1 bar two y 2.0
2 foo one x 3.0
3 foo two w 4.0
data.set_index(‘c‘, inplace=Ture)
data.set_index([‘a‘, ‘b‘])
# data
a b d
c
z bar one 1.0
y bar two 2.0
x foo one 3.0
w foo two 4.0
reset_index
evel:数值类型可以为:int、str、tuple或list,默认无,仅从索引中删除给定级别。默认情况下移除所有级别。控制了具体要还原的那个等级的索引 。
drop:当指定drop=False时,则索引列会被还原为普通列;否则,经设置后的新索引值被会丢弃。默认为False。
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False。
col_level:数值类型为int或str,默认值为0,如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到第一级。
col_fill:对象,默认‘’,如果列有多个级别,则确定其他级别的命名方式。如果没有,则重复索引名。
dataframe 合并
一.concat
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
1.axis 合并的方向
axis理解
axis=0将最开外头的括号去除,看成一个整体,在这个整体上进行运算
axis=1将第二个括号去除,看成一个整体,在这个整体上进行运算
2.join 默认值:join = 'outer'
非合并方向的行/列名称:取交集(inner),取并集(outer)
3.join_axes 默认值:join_axes=None,取并集
二.append
append(self, other, ignore_index=False, verify_integrity=False)
竖方向合并df,没有axis属性 会创建副本 相当于pd.concat([df1,df2])
三 merge
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
pd.merge(left, right) 会按照left,right的共同列进行合并(只保留有共同列项并且值相等行(即交集)),如无共同列会报错
1.on 指定合并的列
2.how
取值范围:'inner', 'outer', 'left', 'right' 默认值 how ="inner"
'inner':共同列的值必须完全相同:
'outer’:共同列的值都会保留,left或right在共同列上的差集,会对它们的缺失列项的值赋上NaN:
‘left’:根据左边的DataFrame确定共同列的保留值,右边缺失列项的值赋上NaN:
‘right’:根据右边的DataFrame确定共同列的保留值,左边缺失列项的值赋上NaN:
3.indecator
空值处理
df.dropna()
axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
thresh:一行或一列中至少出现了thresh个才删除。
subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
df.fillna
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
函数作用:填充缺失值
value:需要用什么值去填充缺失值
axis:确定填充维度,从行开始或是从列开始
method:ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现
limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
df.isnull
判断是不是空值
df.replace(to_replace,value)
前面是需要替换的值,后面是替换后的值。
把df里的0替换成Nan
df.replace(0,np.nan)
df = df.set_index("Date") # 设置所以你为”Date“列
df.index = pd.to_datetime(df.index) # 把df的索引改为时间类型
df = df.resample("M").sum() # 按照新的索引按照月重新采样并求和