https://www.jianshu.com/p/334bb48f6e43
--数据洞察
df.shape #查看数据维度
df.info() #查看数据信息
df.dtypes df['B'].dtype df.B.dtype #查看列的数据类型
df.isnull() df['B'].isnull() df.B.isnull() #空值检查
df['B'].unique() #查看列中的唯一值
df.values #查看数据值
df.columns #查看各列的名称
df.head() df.head(10) #查看前N行数据
df.tail() df.tail(10) #查看后N行数据
--数据清洗
df.dropna(how = 'any') #删除含有空值的行
df.fillna(value = 0) #用0来填充空值
df['B'].fillna(df['B'].mean()) #使用列均值来填充
df['B']=df['B'].map(str.strip) #删除前后空格
df['B']=df['B'].str.lower() df['B']=df['B'].str.upper() #大小写转化
df['B'].astype('int') #数据类型转换
df.rename(columns={'B': 'B1'}) #列的重命名
df['B'].drop_duplicates() df['B'].drop_duplicates(keep='last') #去除重复项
df['B'].replace('value1', 'value2') #数据值的替换
--数据预处理
df = pd.merge(df1,df2,how='inner') #类似excel中的vlookup,SQL中的join how(inner,left,right,outer)
df.set_index('id') #设置索引列
df.sort_index() #按索引列排序
df.sort_values(by=['B']) #按特定的列的值排序
df['G'] = np.where(df['B'] > 10,'type_a','type_b') #计算列,如果B列的值>10,G列显示type_a,否则显示type_b
df.loc[(df['B'] == 'xxx') & (df['C'] >= 10), 'flag']='tag' #计算列,多条件判断派生新列
df1=pd.DataFrame((x.split('-') for x in df['B']),index=df.index,columns=['B1','B2'])
df=pd.merge(df,df1,right_index=True, left_index=True) #按特定字符对列数据进行分割,分割后与原数据合并
--数据获取
#loc 按标签值获取
#iloc 按位置获取
#ix 可同时按标签值和位置进行获取
df.loc[2] df.loc[0:5]
df.iloc[1:2,3:4] df.iloc[:3,:2]
df.iloc[[1,3,5],[2,4,6]]
df.loc[df['B'].isin(['x','xx'])] #按条件获取数据
--数据筛选
df.loc[(df['B'] > 10) & (df['C'] == 'xx'), ['A','B','C','D','E']]
df.loc[(df['B'] > 10) | (df['C'] == 'xx'), ['A','B','C','D','E']]
df.loc[(df['B'] > 10) & (df['C'] == 'xx'), ['A','B','C','D','E']].sort(['A','E'])
df.loc[(df['B'] > 10) & (df['C'] == 'xx'), ['A','B','C','D','E']].D.sum()
df.query('B== ["xx", "xxx"]')
df.query('B== ["xx", "xxx"]').D.sum()