Python 数据帧中的多个计数和中值
我试图在一个程序中同时执行多个操作。 我有一个数据框,它有Python 数据帧中的多个计数和中值,python,datetime,pandas,median,median-of-medians,Python,Datetime,Pandas,Median,Median Of Medians,我试图在一个程序中同时执行多个操作。 我有一个数据框,它有日期,我不知道它的开始和结束,我想找到: 数据集拥有的总天数 总小时数 计数中值 为每天/日期的中位数写一个单独的输出 如果可能,以最简单的方式计算中间值 输入:文件中的几行是GB大小的大文件 2004-01-05,16:00:00,17:00:00,Mon,10766,656 2004-01-05,17:00:00,18:00:00,Mon,12223,670 2004-01-05,18:00:00,19:00:00,Mon,12646
日期
,我不知道它的开始和结束,我想找到:
2004-01-05,16:00:00,17:00:00,Mon,10766,656
2004-01-05,17:00:00,18:00:00,Mon,12223,670
2004-01-05,18:00:00,19:00:00,Mon,12646,710
2004-01-05,19:00:00,20:00:00,Mon,19269,778
2004-01-05,20:00:00,21:00:00,Mon,20504,792
2004-01-05,21:00:00,22:00:00,Mon,16553,783
2004-01-05,22:00:00,23:00:00,Mon,18944,790
2004-01-05,23:00:00,00:00:00,Mon,17534,750
2004-01-06,00:00:00,01:00:00,Tue,17262,747
2004-01-06,01:00:00,02:00:00,Tue,19072,777
2004-01-06,02:00:00,03:00:00,Tue,18275,785
2004-01-06,03:00:00,04:00:00,Tue,13589,757
2004-01-06,04:00:00,05:00:00,Tue,16053,735
开始和结束日期未知
编辑:
预期输出:1将只有一行结果
days,hours,median,median-of-median
2,17262,13,17398
中位数的中值是输出2的Median
列的中值
预期输出:2,将有每个日期的中位数,用于查找中位数的中位数
date,median
2004-01-05,17534
2004-01-06,17262
代码:
显然,代码并没有给出预期的结果
错误如下所示
错误:
Traceback (most recent call last):
File "day_median.py", line 8, in <module>
all_median = df.median(['count'])
File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 5310, in stat_func
numeric_only=numeric_only)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4760, in _reduce
axis = self._get_axis_number(axis)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 308, in _get_axis_number
axis = self._AXIS_ALIASES.get(axis, axis)
TypeError: unhashable type: 'list'
回溯(最近一次呼叫最后一次):
文件“day_median.py”,第8行,在
所有中位数=df.中位数(['count'])
文件“/usr/local/lib/python2.7/dist packages/pandas/core/generic.py”,第5310行,在stat_func中
仅数值=仅数值)
文件“/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py”,第4760行,在
轴=自身。获取轴编号(轴)
文件“/usr/local/lib/python2.7/dist packages/pandas/core/generic.py”,第308行,输入轴号
axis=self.\u axis\u别名.get(axis,axis)
TypeError:不可损坏的类型:“列表”
IIUC可能有助于改变:
date_count = df.count(['date'])
all_median = df.median(['count'])
all_hours = df.count(['startTime'])
致:
date_count = df['date'].count()
all_median = df['count'].median()
all_hours = df['startTime'].count()
print (date_count)
print (all_median)
print (all_hours)
13
17262.0
13
如果需要从列date
、count
和startTime
中进行计数统计
按注释编辑:
如果需要计算列的唯一值,请使用:
数据帧stats
:
cols = ['date_count', 'all_median', 'all_hours']
stats = pd.DataFrame([[date_count, all_median, all_hours]], columns = cols)
print (stats)
date_count all_median all_hours
0 2 17262.0 13
嗯,您能在
打印(日期计数)打印(全部中值)打印(全部小时)中添加所需的输出吗?
?请参见编辑。另一个问题:您需要从所有变量创建数据框吗?好的,给我几分钟时间。我不明白中位数的中位数。你能解释更多吗?使用all\u median=round(df['count'].median())
date_count = df['date'].nunique()
print (date_count)
2
cols = ['date_count', 'all_median', 'all_hours']
stats = pd.DataFrame([[date_count, all_median, all_hours]], columns = cols)
print (stats)
date_count all_median all_hours
0 2 17262.0 13