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

我试图在一个程序中同时执行多个操作。 我有一个数据框,它有
日期
,我不知道它的开始和结束,我想找到:

  • 数据集拥有的总天数
  • 总小时数
  • 计数中值
  • 为每天/日期的中位数写一个单独的输出
  • 如果可能,以最简单的方式计算中间值 输入:文件中的几行是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,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