pandas 中的嵌套数据框

shr*_*ing 5 python numpy matplotlib pandas

我有一长串按月列出的状态代码,例如:

stats = pd.DataFrame(
    [
         ['2016-01', 200, 'xxx.com'],
         ['2016-01', 400, 'xxx.com'],
         ['2016-01', 200, 'xxx.com'],
         ['2016-02', 200, 'xxx.com']
    ],
    columns=['day', 'status_code', 'url']
)
Run Code Online (Sandbox Code Playgroud)

我想最终绘制一些折线图,每个状态代码用一行表示。我已经发现该表包含正确的信息:

pivot = stats.pivot_table(index=['day', 'status_code'], aggfunc=len)
Run Code Online (Sandbox Code Playgroud)

好像:

                        url
month   status_code     
2016-01 200            2
        400            1
2016-02 200            1
Run Code Online (Sandbox Code Playgroud)

或如图所示:

作为图像

所以这就是我需要的信息。

然而:

1.) 我已经无法访问该信息。例如,获取 2016-01 状态代码为 200 的 url 数量的语法是什么?

2.)我将如何绘制它?我想绘制多条线,其中 x 轴是月份,y 轴是状态代码计数。

3.) 为什么右外栏名为“url”?我没有在数据透视表中包含该网址。

HYR*_*YRY 5

您可以使用crosstab()

stats = pd.DataFrame(
    [
         ['2016-01', 200, 'xxx.com'],
         ['2016-01', 400, 'xxx.com'],
         ['2016-01', 200, 'xxx.com'],
         ['2016-02', 200, 'xxx.com']
    ],
    columns=['day', 'status_code', 'url']
)

df = pd.crosstab(stats.day, stats.status_code)

df.plot()
Run Code Online (Sandbox Code Playgroud)