一、删除dataframe中的某列
import pandas as pd
df = pd.read_csv('./XXX_data.csv', sep='\t')
df.head()
df = df.drop(['customerID','用户ID','种类','Unnamed: 26'],axis = 1)
print(df.shape[0])
- drop()函数中的 axis =1 不写的话 是会报错的
二、查看dataframe各列是否有空值
num = df.isna().sum()
print("目前存在空值的情况有:")
print(num)
三、查看dataframe中某一列有多少不一样的值
print("列A一共有多少个不同的值:",df['列A'].nunique())
print("列A一共有多少个不同的值:",df['列A'].unique())
dict_age = df['年龄'].value_counts().to_dict()
print(sorted(dict_age.items()))
四、dataframe 去除某一列包含某值/某条件的行
- 去除dataframe中 “列B”中包含值 0 的行
df = df[~df['列B'].isin([0])]
- 去除dataframe中 不满足某个条件的行 e.g. 仅保留dataframe中 年龄大于18 小于110的行
df = df[(df['年龄']>=18) & (df['年龄(岁)']< 110)]
五、dataframe中“时间列”仅保留年月
- dt.year dt.month 这种方式仅仅能之前具体的时间分别转化为 年 和 月
df['下单时间'] = pd.to_datetime(df['下单时间'], format='%Y/%m/%d %H:%M:%S')
df['时间_年'] = df['下单时间'].dt.year
df['时间_月'] = df['下单时间'].dt.month
- dt.strftime(‘%Y%m’) 这种方式能够自定义保留的特征,本例子中保留年月
df['时间_年月'] = df['下单时间'].dt.strftime('%Y%m')
六、dataframe中根据自定义分组groupby分组
df.groupby(['时间_年月'])['订单ID'].size().reset_index(name = "订单count")
- 统计 以’年龄列"为分组,不同年龄段的订单数
- df.apply(get_age_group,axis = 1)
def get_age_group(row):
if (row['年龄(岁)'] >= 18) & (row['年龄(岁)'] < 38):
return "(18,38)"
elif (row['年龄(岁)'] >= 38) & (row['年龄(岁)'] < 58):
return "(38,58)"
elif (row['年龄(岁)'] >= 58) & (row['年龄(岁)'] < 78):
return "(58,78)"
elif (row['年龄(岁)'] >= 78):
return "(78,+)"
df['年龄组'] = df.apply(get_age_group,axis = 1)
七、 删除dataframe中某列值仅出现一次的行
d = pd.DataFrame(df_user_new['用户ID'].value_counts())
d = d[d['用户ID'] == 1]
delindexs = d.index
df_user_new = df_user_new[~df_user_new['用户ID'].isin(delindexs)]