交叉表合并后在 python 中绘制
Plot in python after crosstab merge
我想绘制我的 DataFrame
。我先有这个 DF:
id|project|categories|rating
1 | a | A | 1
1 | a | B | 1
1 | a | C | 2
1 | b | A | 1
1 | b | B | 1
2 | c | A | 1
2 | c | B | 2
使用了这个代码:
import pandas as pd
df = pd.DataFrame(...)
(df.groupby('id').project.nunique().reset_index()
.merge(pd.crosstab(df.id, df.categories).reset_index()))
现在得到这个 DataFrame
:
id | project | A | B | C |
1 | 2 | 2 | 2 | 1 |
2 | 1 | 1 | 1 | 0 |
现在我想绘制 DF。我想表明,项目的数量是否取决于有多少类别受到影响,或者哪些类别受到影响。我知道如何可视化数据框,但在交叉表和合并后,它无法正常工作
我使用以下代码复制了您的数据:
import pandas as pd
df = pd.DataFrame({'id': [1, 1, 1, 1, 1, 2, 2,],\
'project': ['a', 'a', 'a', 'b', 'b', 'c', 'c'],\
'categories': ['A', 'B', 'C', 'A', 'B', 'A', 'B'],\
'rating': [1, 1, 2, 1, 1, 1, 2]})
现在数据是这样的
categories id project rating
0 A 1 a 1
1 B 1 a 1
2 C 1 a 2
3 A 1 b 1
4 B 1 b 1
5 A 2 c 1
6 B 2 c 2
如果你想绘制 'category count' 作为 'project count' 的函数,它看起来像这样。
import matplotlib.pyplot as plt
# this line is your code
df2 = df.groupby('id').project.nunique().reset_index().merge(pd.crosstab(df.id, df.categories).reset_index())
plt.scatter(df2.project, df2.A, label='A', alpha=0.5)
plt.scatter(df2.project, df2.B, label='B', alpha=0.5)
plt.scatter(df2.project, df2.C, label='C', alpha=0.5)
plt.xlabel('project count')
plt.ylabel('category count')
plt.legend()
plt.show()
你会得到这个
我想绘制我的 DataFrame
。我先有这个 DF:
id|project|categories|rating 1 | a | A | 1 1 | a | B | 1 1 | a | C | 2 1 | b | A | 1 1 | b | B | 1 2 | c | A | 1 2 | c | B | 2
使用了这个代码:
import pandas as pd
df = pd.DataFrame(...)
(df.groupby('id').project.nunique().reset_index()
.merge(pd.crosstab(df.id, df.categories).reset_index()))
现在得到这个 DataFrame
:
id | project | A | B | C | 1 | 2 | 2 | 2 | 1 | 2 | 1 | 1 | 1 | 0 |
现在我想绘制 DF。我想表明,项目的数量是否取决于有多少类别受到影响,或者哪些类别受到影响。我知道如何可视化数据框,但在交叉表和合并后,它无法正常工作
我使用以下代码复制了您的数据:
import pandas as pd
df = pd.DataFrame({'id': [1, 1, 1, 1, 1, 2, 2,],\
'project': ['a', 'a', 'a', 'b', 'b', 'c', 'c'],\
'categories': ['A', 'B', 'C', 'A', 'B', 'A', 'B'],\
'rating': [1, 1, 2, 1, 1, 1, 2]})
现在数据是这样的
categories id project rating
0 A 1 a 1
1 B 1 a 1
2 C 1 a 2
3 A 1 b 1
4 B 1 b 1
5 A 2 c 1
6 B 2 c 2
如果你想绘制 'category count' 作为 'project count' 的函数,它看起来像这样。
import matplotlib.pyplot as plt
# this line is your code
df2 = df.groupby('id').project.nunique().reset_index().merge(pd.crosstab(df.id, df.categories).reset_index())
plt.scatter(df2.project, df2.A, label='A', alpha=0.5)
plt.scatter(df2.project, df2.B, label='B', alpha=0.5)
plt.scatter(df2.project, df2.C, label='C', alpha=0.5)
plt.xlabel('project count')
plt.ylabel('category count')
plt.legend()
plt.show()
你会得到这个