如何在 python 中绘制重复文本的计数

How to plot in python for count of repeated text

我正在尝试使用 seaborn 和 matplotlib 绘制我的数据框,但出现无法将字符串转换为浮点数之类的错误。

我的数据是这样的:

ID     |  Status     | Date | Columns|
-------+-------------+------+--------+
28     |  ACTIVE     |      |        |  
29     |  ACTIVE     |      |        |
49623  |  TERMINATED |      |        |
49624  |  TERMINATED |      |        |
49625  |  TERMINATED |      |        |

到目前为止我已经尝试过:

df_count = df.apply(pd.value_counts) plt.plot(df_count)

其中 df_count 看起来像

           |STATUS|
-----------+------+
ACTIVE     |38537 |
TERMINATED |1185  |

尝试执行 sns.barplot(df) 时出现以下错误:

unsupported operand type(s) for +: 'int' and 'str'

并尝试执行 plt.plot(df) 它给出了以下错误:

ValueError: could not convert string to float: '12/31/2014 0:00'

我的python剧情好像很零,求指教

我认为你必须指定 x 和 y。请尝试:

sns.barplot(x=df_count.index,y=df_count.Status)

sns.plt.show()

-编辑

test.csv:

,STATUS
ACTIVE,38537
TERMINATED,1185

代码:

import pandas as pd
import seaborn as sns

df = pd.read_csv('test.csv', delimiter=',')
df.index.names = ['Type']

sns.barplot(x=df.index,y=df.STATUS)
sns.plt.show()

输出:

最简单的方法是使用 pandas 的集成绘图功能,使用 df_count.plot(kind="bar").

这是一个完整的例子:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

cats = np.random.choice(["Active", "Terminated"], 100, p=[0.43, 0.57])
df = pd.DataFrame({"ID": np.arange(100), "Status":cats, "unusedData":np.random.rand(100)})

df_count = df[["Status"]].apply(pd.value_counts) 
df_count.plot(kind="bar")

plt.show()

最后两个答案是 pandasseaborn,这个是 matplotlib

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"STATUS": ['Active', 'Terminated'], "counts": [38537,1185]})
x_pos = np.arange(df.shape[0])
plt.bar(x_pos, df.counts, align='center', color=['green', 'blue'], alpha=0.5)
plt.xticks(x_pos, df.STATUS)
plt.ylabel('Counts')
plt.title('STATUS')
plt.show()