如何使用 pandas 重塑数据框?
How to reshape dataframe with pandas?
我有一个数据框,其中包含从 2018 年到 2021 年的每一天的产品销售额。 Dataframe 包含四列(日期、地点、产品类别和销售额)。从前两列(日期、地点)开始,我想使用可用数据来填补空白。添加数据后,我想删除 ProductCategory 中没有数据的行。我想在 python pandas.
中做
我的数据集样本如下所示:
我希望数据框看起来像这样:
将 fillna 与方法 'ffill' 结合使用,将最后一个有效观察向前传播到下一个有效回填。然后删除包含 NA 的行。
df['Date'].fillna(method='ffill',inplace=True)
df['Place'].fillna(method='ffill',inplace=True)
df.dropna(inplace=True)
您将使用 forward-filling 方法将空值替换为其上方最接近的值 df['Date', 'Place'] = df['Date', 'Place'].fillna(method='ffill')
。接下来,删除具有缺失值 df.dropna(subset='ProductCategory', inplace=True)
的行。恭喜,现在你有了想要的 df
通过绘图计算列中类别的频率,
从图中您可以看到代表重复次数最多的值的条形图
df['column'].value_counts().plot.bar()
并使用索引获取最频繁的值,索引[0]给出最重复和
index[1] 给出第二个最重复的,你可以根据你的要求选择。
most_frequent_attribute = df['column'].value_counts().index[0]
然后用上面的方法填充缺失值
df['column'].fillna(df['column'].most_freqent_attribute,inplace=True)
要用相同的方法填充多个列,只需将其定义为函数,就像这样
def impute_nan(df,column):
most_frequent_category=df[column].mode()[0]
df[column].fillna(most_frequent_category,inplace=True)
for feature in ['column1','column2']:
impute_nan(df,feature)
我有一个数据框,其中包含从 2018 年到 2021 年的每一天的产品销售额。 Dataframe 包含四列(日期、地点、产品类别和销售额)。从前两列(日期、地点)开始,我想使用可用数据来填补空白。添加数据后,我想删除 ProductCategory 中没有数据的行。我想在 python pandas.
中做我的数据集样本如下所示:
我希望数据框看起来像这样:
将 fillna 与方法 'ffill' 结合使用,将最后一个有效观察向前传播到下一个有效回填。然后删除包含 NA 的行。
df['Date'].fillna(method='ffill',inplace=True)
df['Place'].fillna(method='ffill',inplace=True)
df.dropna(inplace=True)
您将使用 forward-filling 方法将空值替换为其上方最接近的值 df['Date', 'Place'] = df['Date', 'Place'].fillna(method='ffill')
。接下来,删除具有缺失值 df.dropna(subset='ProductCategory', inplace=True)
的行。恭喜,现在你有了想要的 df
通过绘图计算列中类别的频率, 从图中您可以看到代表重复次数最多的值的条形图
df['column'].value_counts().plot.bar()
并使用索引获取最频繁的值,索引[0]给出最重复和 index[1] 给出第二个最重复的,你可以根据你的要求选择。
most_frequent_attribute = df['column'].value_counts().index[0]
然后用上面的方法填充缺失值
df['column'].fillna(df['column'].most_freqent_attribute,inplace=True)
要用相同的方法填充多个列,只需将其定义为函数,就像这样
def impute_nan(df,column):
most_frequent_category=df[column].mode()[0]
df[column].fillna(most_frequent_category,inplace=True)
for feature in ['column1','column2']:
impute_nan(df,feature)