【问题标题】:Relative frequency from dataframe with 3 columns of raw data?具有 3 列原始数据的数据帧的相对频率?
【发布时间】:2019-04-12 09:32:20
【问题描述】:

Python 新手 (&StackOverflow),我正在努力寻找一种解决方案来获取我的 ['Product_Name', 'Date_of_Sale', 'Quantity'] 数据并输出每种产品每日数量频率的相对频率。

例如,产品 1 销售 8 件(第 1 天)、6 件(第 2 天)、6 件(第 3 天)、5 件(第 4 天)、8 件(第 5 天)、7 件(第 6 天)、6 件(第 7 天) ) 超过 7 天,给出 {5 units : 0.142, 6 : 0.429, 7 : 0.142, 8 : 0.286} 的产品 1 的相对频率。

如何在一段时间内对所有产品执行此操作?

【问题讨论】:

  • 请发布您的数据框样本,df.head() 应该不错

标签: python pandas dataframe frequency frequency-analysis


【解决方案1】:

标准化值计数:

>>> df['Product1'].value_counts(normalize=True)
6    0.428571
8    0.285714
7    0.142857
5    0.142857
Name: Product1, dtype: float64

“针对一段时间内的所有产品”执行此操作取决于您的数据结构。您需要提供样本和预期结果。

【讨论】:

  • 谢谢,亚历山大。 rahlf23 的答案解决了这个问题。无论如何,谢谢。
  • 如果数据中有 NaN,则该答案将给出错误的结果。如果你想要一本字典(从你的问题中不清楚),只需在上面的答案中标记.to_dict()
  • 好的,谢谢。我会根据你的初步反应来玩,看看它会把我带到哪里,如果有问题就回来。
【解决方案2】:

使用value_counts()to_dict()

import pandas as pd

df = pd.DataFrame({'Day': [1, 2, 3, 4, 5, 6, 7],
    'Product1': [8, 6, 6, 5, 8, 7, 6]})

df['Product1'].value_counts().div(df.shape[0]).to_dict()

产量:

{6: 0.42857142857142855, 8: 0.2857142857142857, 7: 0.14285714285714285, 5: 0.14285714285714285}

【讨论】:

  • 太棒了!谢谢 rahlf23
猜你喜欢
  • 2014-01-11
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多