在pandas

时间:2017-10-10 11:36:46

标签: python-2.7 pandas matplotlib

这是我的数据示例:

import pandas as pd
mydic = {'user1': {'product': 234, 'device': 567}, 'user1': {'product': 678, 'device': 256},'user2': {'product': 890, 'device': 456},'user2': {'product': 256, 'device': 678},'user3': {'product': 456, 'device': 278}}
df = pd.DataFrame.from_dict(mydic, orient='index', dtype=None)
df.head()

enter image description here

我可以绘制散点图或条形图,但我相信,对于这个特定的任务,最好的方法是为每个值显示每个用户的注释值。像这样:

enter image description here

我甚至不确定它是否可能在python中。有人能提出一些聪明的建议吗?

1 个答案:

答案 0 :(得分:1)

可能不是最优雅的解决方案,但请尝试:

%matplotlib inline
import matplotlib.pyplot as plt
n = len(df)
y = range(n)
scale = 5
f, ax = plt.subplots(1, 1)
ax.scatter([[1]] * n, y, s=scale * df['product'])
for i in range(n):
    ax.text(2, y[i], df.index[i])
ax.scatter([[3]] * n, y, s=scale * df['device'])
ax.set_xlim(0, 4)
ax.set_ylim(-1, n);

使用样式来获得更好的输出(您可以删除轴和网格,更改大小和颜色):

play with numbers to get better ouput