df.set_index(‘name’) # 设置name列为索引
df.set_index([‘name’,‘team’]) #设置层级索引
df.set_index([df.name.str[0],‘name’]) #设置层级索引
df.set_index(‘name’,inplace=True) #设置 inplace=True参数可以直接修改原df
s=pd.Series(i for i in range(100))
df.set_index(s) # 指定一个series
df.set_index([s,‘name’]) # 同时指定series和现有字段
df.set_index(‘name’,drop=False) # 保留原列
df.set_index(‘name’,append=True) # 保留原索引
df.reset_index() # 清除索引
df.reset_index(inplace=True) #设置 inplace=True参数可以直接修改原df
df.reset_index([‘month’,‘year’]).reset_index(level=1) # year一级索引清除
df.reset_index(level=‘class’) # class一级索引清除
df.index.astype(‘int64’) # 转换类型
df.index.isin() # 是否存在
df.index.rename(‘number’) # 修改索引的名称
df.index.nunique() # 不重复值的数量
df.index.sort_values(ascending=False) # 排序,倒序
df.index.map(lambda x:x+‘_’) # map函数处理
df.index.str.replace(‘_’,‘’) # str 替换
df.index.str.split(‘_’) # str 分隔
df.index.to_list() # 转换为列表
df.index.to_frame(index=False,name=‘a’) # 转称DataFrame
df.index.to_series() # 转为serise
df.index.to_numpy() # 转为numpy
df.index.unique() # 去重
df.index.value_counts() # 去重及计数
df.index.where(df.index==‘a’) # 筛选
df.index.rename(‘grade’,inpalce=False) # 重命名索引
df.index.rename([‘species’,‘year’]) # 多层,重命名索引
df.index.T # 转置,在多层索引里很有用
df.index.set_names(‘species’,level=0) # 设置名称
df.index.set_names([‘kind’,‘year’],inplace = True) # 设置名称
rename_axis 方法可以修改索引,也可以修改列名
s.rename_axis(‘student_name’) # 重命名series 索引
df.rename_axis([‘dow’,‘hr’]) # 多层索引修改名称
df.rename_axis(‘info’,axis=‘columns’) #修改列索引
df.rename_axis(columns={‘name’:‘s_name’,‘b’:‘B’}) # 修改层级索引名称
df.rename_axis(columns=str.upper) # 列索引名变大写
df.rename和df.set_axis可以修改行、列的索引
df.rename(columns={‘A’:‘a’,‘B’:‘c’}) # 一 一对应修改列索引
df.rename(index={‘A’:‘a’,‘B’:‘c’}) # 修改行索引
df.rename({‘A’:‘a’,‘B’:‘c’},axis=‘index’) # 修改行索引 axis=0
df.rename(index=str) # 修改索引数据类型
df.rename(lambda x:‘t_’+x ,axis=1) # 修改列名
df.rename(lambda x,y = iter(‘abcdef’):next(y),axis=1) # 利用iter()函数的next特性修改列名
df.describle() 返回一个多行的所有数字列的统计表:总数、平均数、标准差、最小值、四分位数、最大值等
如果没有数字,则会输出与字符相关的统计数据:数量、不重复值数、最大值(按照首字母顺序)
df.round({‘Q1’:2,‘Q2’:0}) # 指定Q1四舍五入保留两位小数,Q2四舍五入保留整数
df.nunique() #每个列的去重值的数量
s.value_counts() # series不重复的值及数量
s.value_counts(normalize=True) # series不重复值的频率
s.value_counts(sort=True) # series不重复值的频率
s.unique() # series 去重的值array
s.is_unique() # series 是否有重复
df.diff()可以做位移差操作,经常用来计算一个序列数据中上一个和下一个数据之间的差值;如果是增量研究,默认被减的数列下移一位,原数据在同位置上对位移后的数据相减,得到一个新的序列,第一位由于被减数下移,没有数据,结果是NaN;可以传入一个数值来规定移动多少位,负数表示方向移动。如果Series类型不是数字,会报错
pd.Series([9,4,6,7,9]).diff()
pd.Series([9,4,6,7,9]).diff(-2)
对于DataFrame 可以传入axis=1进行左右移动
df.loc[:5,‘Q1’:‘Q4’].diff(1,axis=1)
shift()可以对数据进行位移,不做任何计算
df.shift() # 整体下移一行,最顶的一行位NaN
df.shift(3) ## 移动三行
df.Q1.head().shift(-1) # 整体上移以上,最后一行为NaN
df.shift(axis=1) # 右移一位
df.shift(axis=3) # 右移三位
df.shift(-1,axis=1) # 左移一位
df.Q1-df.Q1.shift() # 实现了df.Q1.diff()
rank()可以生成数据的排序值替换原来的数据值,支持对所有类型的数据排序
df.head().rank(axis=1) # 横向排名
df.head().rank() # 纵向排名
df[col] # 选择列
df.loc[label] # 按照索引选择行 ,df.loc[<行表达式>,<列表达式>]
df.iloc[loc] # 按照数字索引选择行,df.iloc[<行表达式>,<列表达式>],只能用于数字索引
df[5:10] # 切片选择行
df[bool_vec] # 使用表达式筛选行
df.at[4,‘Q1’] # 取某一个值,df.at[<索引>,<索引>]
df.iat[4,2] # 取某一个值,df.iat[<索引>,<索引>] 只能用与数字索引
df.get(‘name’,0) # 获取name列,如果不存在,返回0 ; df.get(key,default=None) ,如果无值,返回默认值
df.truncate() 可以对DataFrame和Series进行截取,可以将索引传入before和after参数,将这个区间外的数据剔除
df.truncate(before=2,after=4) 取出2,3,4行数据