绘图:单个大列及其频率

时间:2016-12-24 10:37:20

标签: python pandas ggplot2

我是Python的新手,所以提前抱歉我的新手问题和错误。

我自己试图找到它,但我觉得我错过了一些基本信息。

目标是在条形图中绘制此信息。

我将列与pandas数据帧分开,43169行×1列。示例:

user_lifetime
0   947.000000
1   951.000000
2   523.000000
3   741.000000
4   840.000000
5   563.000000

为了绘制这个,我需要得到每个唯一值的频率,对吧? 发现这个:

 lifetime=df.apply(lambda x: x.value_counts(dropna=False)).

它生成一个像这样的表

              user_lifetime
15947.000000    4677
15916.000000    1951
2017.000000     1917
2016.000000     1131
2014.000000     445

这似乎是我的目标,但它似乎不是我可以用于绘图的表格。

对我错过的任何建议? 我的顶级包优先级是ggplot,因为我们在演讲中使用了这些示例。

1 个答案:

答案 0 :(得分:2)

您需要链接pd.Series.value_countsplot(kind='bar')(或plot.bar(),版本0.17.1中的新内容并且完全相同)

df['user_lifetime'].value_counts().plot(kind='bar')

你可能最终得到了大量的酒吧......也许你正在寻找一个直方图,其中每个值最终都在垃圾箱里? DataFrame.hist是你需要的。

如果我使用一些随机数据:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(1,1000,(40000,1)), columns=['user_lifetime'])
如果我使用上面的话,我会有太多的酒吧。所以我想要一个直方图,比如20个箱子:

df.user_lifetime.hist(bins=20)

Histogram