【问题标题】:Distribution with Seaborn与 Seaborn 一起分发
【发布时间】:2021-08-16 17:25:31
【问题描述】:

我有一个这样组成的 pandas 数据框:

User_id Calls Index
7A 8 19-05-2020
10B 5 19-05-2020
7A 2 20-05-2020
10B 6 20-05-2020

在索引中,他们拨打电话的日期和时间即使在这里我把它放在右边,熊猫说日期是左边的索引。

我想按用户在一年中拨打的电话次数进行分布。

目前有 400 多个不同的用户,所以我不会只对那些我很容易找到的呼叫次数最多的用户进行所有操作:ret.groupby(['user_id'])['calls'].sum().sort_values(ascending=False).head(10)

我尝试创建一个循环,将呼叫次数最多的前 10 个用户在一年中进行呼叫分配(因此我们在 x 轴上将一年中的月份以数字或不写在y 轴是密度或调用次数,我们将有一个标题来说明我们制作图表的用户)

我该怎么做?

【问题讨论】:

    标签: python pandas seaborn


    【解决方案1】:

    IIUC 尝试使用resample sum 获取每月总通话次数,然后使用plot

    *请注意,提供的数据仅包含一个月,因此我添加了第二个月以使图表更清晰:

    import pandas as pd
    from matplotlib import pyplot as plt
    
    df = pd.DataFrame({'User_id': ['7A', '10B', '7A', '10B'], 'Calls': [8, 5, 2, 6],
                       'Index': ['19-05-2020', '19-05-2020', '20-06-2020',
                                 '20-06-2020']}).set_index('Index')
    
    df.index = pd.to_datetime(df.index, format='%d-%m-%Y')
    
    users = ','.join(df['User_id'].unique())
    
    plot_df = df.resample('1M')['Calls'].sum()
    ax = plot_df.plot(kind='bar',
                      rot=0,
                      title=users,
                      ylabel='Calls',
                      xlabel='Months')
    
    ax.set_xticklabels(plot_df.index.strftime("%Y-%m"))
    plt.show()
    


    df:

               User_id  Calls
    Index                    
    2020-05-19      7A      8
    2020-05-19     10B      5
    2020-06-20      7A      2
    2020-06-20     10B      6
    

    users:

    7A,10B
    

    plot_df:

    Index
    2020-05-31    13
    2020-06-30     8
    Freq: M, Name: Calls, dtype: int64
    

    【讨论】:

      【解决方案2】:

      尝试这样的事情,首先按“呼叫”列排序,然后保留前 10 行

      ret = ret.groupby(['user_id'])['calls'].sum().sort_values(ascending=False, by=['calls'])
      ret = ret.iloc[:10]
      

      【讨论】:

      • 是的,但是由于 by ,代码不起作用,而且我已经设法做到了
      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      相关资源
      最近更新 更多