python中pandas常用语法
·
参考资料:
python数据拼接: pd.concat - boobo - 博客园
Python dataframe数据 按某一列的值拆分成多个小的dataframe数据博客
Python保留指定位数的小数_Lavi的专栏-CSDN博客
python 分组找出最大值所在行groupby() + idxmax()等四种方法--CSDN博客
python DataFrame的合并方法总结--CSDN博客
统计缺失情况:
df.isnull().sum() --- 统计每列含有多少行数的null值,返回行数
df.isnull().sum()/df.shape[0] --- 统计缺失的比例
df.isnull().any() --- 统计所有列是否有null值,返回true\false,true代表含有null值
df.isnull().any().value_counts() --- 统计含有null的列和不含null的列分别的数量
df.isnull().T.any()
df.isnull().T.any().value_counts()--- 统计含有null的行和不含null行分别的数量
分组后统计信息:
group by后的数据类型<class 'pandas.core.series.Series'>,reset_index()后的类型为<class 'pandas.core.frame.DataFrame'>,reset_index()内可添加参数:reset_index(drop=True),默认为False,如果想让数据从Series-->DataFrame,也可以用pd.DataFrame函数;
df.groupby('year_month').count() --- 计数
df.groupby('year_month').sum() --- 求和
df.groupby('year_month').describe() --- 描述性统计
df.groupby('year_month')['sku'].nunique() --- 去重数量统计
df.groupby('year_month').agg({'df_1':'sum','df_2':'max'}).reset_index() --- 不同字段个性化聚合
pd.DataFrame的用法:可以将series转为dataframe:
pd.DataFrame(df.groupby('year_month').count())
df.sort('price', ascending=False).groupby('sku', as_index=False).first() --最低价
求最低价:
pd.merge(pd.DataFrame(df[df['sku'].isin(list)].groupby(by = 'sku',as_index=False).apply(lambda t: t[t.monthly_price==t.monthly_price.min()])),
pd.DataFrame(df[(df['line_pack']=='xxxx') & (df['yearmonth']=='202104')].groupby(['sku','sku_name'])['y'].sum().sort_values('y',ascending = False)),left_on='sku',right_on='sku',how='left').sort_values('y',ascending=False)
条件筛选
df[(df['sku'] == 0 )] --- 等于
df[(df['sku']!= 0 )] --- 不等于
df = df[(df['sku'].isin(list(set(df_1['sku']))))] --- df的sku值需要满足在df_1的sku去重值里面
df = df[(df['sku'].isin(df_1['sku'].unique().tolist())
列处理
x0 = pd.DataFrame(columns=(['column_1','column_2'])) --- 创建空数据框
df['column_1_2'] = df['column_1'].map(str) + df['column_2'].map(str) 合并列
df['is_same_column'] =np.where(df['column_1']==df['column_2'],'same','different')
df['lenghth'] = [len(i) for i in df['sku_id']] --- 列表表达式
df['sku'] = df['sku'].astype(int).astype(str). --格式转换
关联:
pd.merge(df_1,df_2,left_on='df_1_key',right_on='df_2_key',how='left')
个性化输出:
print(i+'的比例:'+str('{:.2%}'.format(rate))) --- 循环输出百分比
print(pd.concat([df_1.groupby('year_month')['sku'].nunique(),
df_2.groupby('year_month')['sku'].nunique(),
df_3.groupby('year_month')['sku'].nunique()],axis=1)) --- 横向拼接
df.to_excel('本地df.xlsx',index=False) --- 输出成excel
集合:
for i in sorted(list(set(df_1['yearmonth']))):
a = set(df_1[df_1['yearmonth']=='202108']['sku'])
b = set(df_2[df_2['yearmonth']==i]['sku'])
print(i)
print(a-b)
print(b-a)
更多推荐
所有评论(0)