使用 matplotlib 和 pandas 从 csv 文件中绘制直方图

Posted

技术标签:

【中文标题】使用 matplotlib 和 pandas 从 csv 文件中绘制直方图【英文标题】:plotting histogram from csv file using matplotlib and pandas 【发布时间】:2016-07-03 16:29:35 【问题描述】:

我的 csv 文件非常复杂。它包含数字和字符串属性。 这就是我的 csv 文件的样子 我想绘制进程与 cpuid 的直方图

【问题讨论】:

您能否展示您尝试过的内容,例如您没有发布任何加载数据的代码或尝试过任何有据可查的plotting methods 使用 read_csv() function 将 csv 作为 pandas DataFrame 读取。 如果第二列中只有cpu_id,那么简单地为列提供标题“cpu_id”并从字段中删除(搜索/替换)除值 0 之外的所有内容是否有意义/1? 【参考方案1】:

您可以使用read_csv、indexing with str 和hist 绘图:

import pandas as pd
import matplotlib.pyplot as plt
import io

temp=u"""kmem_kmalloc;cpu_id=1
kmem_kmalloc;cpu_id=1
kmem_kmalloc;cpu_id=1
kmem_kmalloc;cpu_id=1
kmem_kfree;cpu_id=1
kmem_kfree;cpu_id=1
power_cpu_idle;cpu_id=0
power_cpu_idle;cpu_id=0
power_cpu_idle;cpu_id=3"""

s = pd.read_csv(io.StringIO(temp), #after testing replace io.StringIO(temp) to filename
                sep=";", #set separator, if sep=',' can be omited (default sep = ,)
                header=None, #no header in csv
                names=[None,'cpuid'], #set names of columns, (first is None because index)
                index_col=0, #first column set to index
                squeeze=True) #try convert DataFrame to Series
print s
kmem_kmalloc      cpu_id=1
kmem_kmalloc      cpu_id=1
kmem_kmalloc      cpu_id=1
kmem_kmalloc      cpu_id=1
kmem_kfree        cpu_id=1
kmem_kfree        cpu_id=1
power_cpu_idle    cpu_id=0
power_cpu_idle    cpu_id=0
power_cpu_idle    cpu_id=3
Name: cpuid, dtype: object
#if max cpu <= 9, use Indexing with .str 
s = s.str[-2].astype(int)

#if cpu > 9 
#s= s.str.extract('(\d)', expand=False)
print s
kmem_kmalloc      1
kmem_kmalloc      1
kmem_kmalloc      1
kmem_kmalloc      1
kmem_kfree        1
kmem_kfree        1
power_cpu_idle    0
power_cpu_idle    0
power_cpu_idle    3
Name: cpuid, dtype: int32

plt.figure();
s.hist(alpha=0.5)
plt.show()

【讨论】:

以上是关于使用 matplotlib 和 pandas 从 csv 文件中绘制直方图的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 的 pandas 中的数据帧制作 matplotlib 散点图

Pandas、matplotlib 和 plotly - 如何修复系列图例?

如何从 Pandas 数据框对象显示 X 轴到 Matplotlib 条形图

如何使用 Matplotlib、pandas 和 sklearn 创建线性回归图?

Python图形绘制:如何用Matplotlib和pandas绘图?

使用 matplotlib 和 pandas 制作 groupby 图