参考资料:

python 判断为空nan, null

python 一行代码 将小数变成百分数 - 知乎

python数据拼接: pd.concat - boobo - 博客园

Python列表解析式和生成表达式 - 知乎

Python dataframe数据 按某一列的值拆分成多个小的dataframe数据博客

Python保留指定位数的小数_Lavi的专栏-CSDN博客

python 分组找出最大值所在行groupby() + idxmax()等四种方法--CSDN博客

python DataFrame的合并方法总结--CSDN博客

python用groupby聚合后生成数据框 - 简书


统计缺失情况:

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)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐