首页 > 解决方案 > 使用 Pandas 绘制 X 对 Y 的频率,其中 X 为 0 或 1 [Python,CSV,Pandas]

问题描述

我有一个已生成并更改为当前形式的 CSV 文件;

样本数据的快速快照

我希望能够绘制一个图形,该图形将 X 沿 X 轴正常,Y 轴为频率“真”值,即(1),以便我可以可视化时间和频率之间的关系发生的事件。

到目前为止,我已经尝试过融化并使用 value_counts 但它们似乎给出了绝对值,而不是相对于 X 值。我知道在绘图之前数据可能需要另外排序,但我不确定最好的方法。

非常感谢您的帮助。

标签: pythonpandascsv

解决方案


您可以绘制一个可能会起作用的直方图。或者您可以使用 groupby 'x' 来查找 'y' 的总和,代码如下所示:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = np.array([[1988,1988,1988,1989,1990,1990,1991,1991], [0,1,1,0,1,1,0,0]])
df = pd.DataFrame(data.T, columns = ['x', 'y'])
df=df.groupby(['x']).sum()
print(df)

推荐阅读