计算Pandas数据框架中项目集的频率可以使用Pandas中的value_counts()方法来实现。
value_counts()方法可以用于计算Series(一维数据)中每个元素的频率,也可以用于计算DataFrame(多维数据)中某一列的频率。
下面结合示例详细讲解如何计算DataFrame中项目集的频率。
首先,导入Pandas模块并创建一个简单的包含商品订单信息的数据框:
import pandas as pd
# 定义数据
data = {
'商品名称': ['商品A', '商品B', '商品A', '商品C', '商品C', '商品A', '商品B', '商品D'],
'数量': [1, 2, 3, 4, 5, 2, 1, 4],
'金额': [50, 30, 40, 60, 100, 80, 20, 70]
}
# 创建数据框
df = pd.DataFrame(data)
得到以下数据框:
商品名称 | 数量 | 金额 | |
---|---|---|---|
0 | 商品A | 1 | 50 |
1 | 商品B | 2 | 30 |
2 | 商品A | 3 | 40 |
3 | 商品C | 4 | 60 |
4 | 商品C | 5 | 100 |
5 | 商品A | 2 | 80 |
6 | 商品B | 1 | 20 |
7 | 商品D | 4 | 70 |
接下来,通过value_counts()方法计算‘商品名称’列中每个商品出现的频率。
df['商品名称'].value_counts()
执行上面的代码会得到以下结果:
商品A 3
商品B 2
商品C 2
商品D 1
Name: 商品名称, dtype: int64
这个结果表明,商品A在这7项订单中被订购了3次,商品B被订购了2次,商品C和商品D分别被订购了2次和1次。
另外,value_counts()方法还可以通过参数normalize来计算频率的百分比。normalize参数默认为False,如果将normalize参数设置为True,则会计算出每个元素占比的百分比。
df['商品名称'].value_counts(normalize=True)
这时得到的结果是:
商品A 0.375
商品B 0.250
商品C 0.250
商品D 0.125
Name: 商品名称, dtype: float64
这个结果表明,商品A出现的频率为0.375(即占比37.5%),商品B的频率为0.25(即占比25%),商品C和商品D的频率分别为0.25和0.125。
最后,如果需要按频率大小排序,则可以通过sort_values()方法来实现。该方法将DataFrame中的数据根据指定的列进行排序,默认是按升序排列。在本例中,需要按照降序排列。方法是将ascending参数设置为False。
df['商品名称'].value_counts(normalize=True).sort_values(ascending=False)
得到的结果是:
商品A 0.375
商品B 0.250
商品C 0.250
商品D 0.125
Name: 商品名称, dtype: float64
这个结果与之前相同,只是按照频率大小进行了排序。
至此,我们完成了计算DataFrame中项目集频率的相关操作。
本文链接:http://task.lmcjl.com/news/17539.html