【发布时间】:2020-03-28 02:37:02
【问题描述】:
我有一个 csv 文件,其中包含以下示例所示的表格:
| TimeStampHour | Day | Hour | Count |
|------------------|-----|------|-------|
| 28/01/2019 00:00 | Mon | 0 | 198 |
| 28/01/2019 01:00 | Mon | 1 | 513 |
| 28/01/2019 02:00 | Mon | 2 | 110 |
| 28/01/2019 03:00 | Mon | 3 | 50 |
| 28/01/2019 04:00 | Mon | 4 | 6 |
| 28/01/2019 05:00 | Mon | 5 | 6 |
| 28/01/2019 06:00 | Mon | 6 | 1503 |
| 28/01/2019 07:00 | Mon | 7 | 108 |
| 28/01/2019 08:00 | Mon | 8 | 211 |
| 28/01/2019 09:00 | Mon | 9 | 169 |
...
还有一些值会持续几个月,并包含一周中的其他日子一直到周日。
我想要达到的目标:
我想先通过计数找到最小的 25 行,然后输出这些行。 为了在 python 中实现这一点,我做了以下工作:
import pandas as pd
import numpy as np
df = pd.read_csv('mydata.csv')
least25 = df.nsmallest(25, "Count",keep='all')
print(least25)
OUTPUT:
TimeStampHour Day Hour Count
124 02/02/2019 07:00 Sat 7 3
142 03/02/2019 04:00 Sun 4 3
143 03/02/2019 06:00 Sun 6 3
144 03/02/2019 07:00 Sun 7 3
165 04/02/2019 04:00 Mon 4 3
... ... ... ... ...
1940 20/04/2019 04:00 Sat 4 6
1965 21/04/2019 05:00 Sun 5 6
2131 28/04/2019 04:00 Sun 4 6
3138 09/06/2019 03:00 Sun 3 6
4144 21/07/2019 03:00 Sun 3 6
这我很满意。
我的下一步是对这些结果执行众数计算,以便我可以以与上述相同的输出格式(显示行和列)输出存在众数的行。
我想要的输出如下所示:
| Day | Hour | Count(Min) | Occurance |
|-----|------|------------|-----------|
| Wed | 6 | 3 | 10 |
| Wed | 7 | 3 | 8 |
| Wed | 8 | 3 | 7 |
| Wed | 9 | 3 | 9 |
| Wed | 10 | 3 | 11 |
| Wed | 11 | 3 | 7 |
| Wed | 12 | 3 | 5 |
| Fri | 7 | 3 | 1 |
| Fri | 8 | 3 | 6 |
| Fri | 9 | 3 | 7 |
换句话说:打印具有最常见最小值(模态最小值)最频繁出现的最小计数的行。为了尝试并实现这一点,我们做了以下工作:
modeOfmin = least25['Count'].mode()
print(modeOfMin)
OUTPUT:
0 6
dtype: int64
我想学习如何实现我想要的输出,但我不知道如何去做。
有人能解释一下吗?
【问题讨论】:
标签: python-3.x pandas dataframe statistics