Python Pandas Dataframe 的基本操作

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()

你可能感兴趣的:(Python Pandas Dataframe 的基本操作)