2016-03-17 4 views
-7

Мой файл csv очень сложный. Он содержит числовые и строковые атрибуты. это как мой файл CSV выглядит enter image description here Я хочу построить гистограмму процессов по сравнению с CPUIDграфик гистограммы из файла csv с использованием matplotlib и pandas

+4

Можете ли вы показать, что вы пробовали, для inst вы не разместили код, который загружает данные или пытается выполнить любые хорошо задокументированные [методы печати] (http://pandas.pydata.org/pandas-docs/stable/api.html#api-dataframe-plotting) – EdChum

+0

Используйте ['read_csv()' function] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html) , чтобы прочитать csv как pandas DataFrame. – Sevanteri

+1

Если во втором столбце есть только 'cpu_id', не имеет смысла просто давать столбцу заголовок« cpu_id »и удалять (искать/заменять) все из полей, кроме значений 0/1? – jDo

ответ

0

Вы можете использовать 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() 

graph

Смежные вопросы