2015-02-27 3 views
0

Итак, я сделал график, который отображает несколько строк из CSV-файла на один граф. Я хочу сделать еще один график, который включает только определенные строки, чтобы лучше их анализировать.Python, показывающий определенную строку данных на графике

Мои данные (только часть от общей суммы):

Number Base-BW 1-BW 2-BW 3-BW 4-End-BW 
182-14 39.7 41.1 40.3 39.5 38.8 
95-14 43.3 41  41.9 42.4 41.6 
15-14 59.4 59.4 59.1 59.1 56.4 
124-14 76.4 77.4 74.8 74.5 68.1 
183-14 35  35.5 36.8 37.3 35.4 

Мой текущий сценарий:

# import all needed modules 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from scipy import stats as st 
from numpy import loadtxt 
import os 
%matplotlib inline 
# Set some Pandas options 
pd.set_option('display.notebook_repr_html', False) 
pd.options.display.mpl_style = 'default' 
SelectBreed = pd.read_csv('SelectBreeding(2-2-15).csv') 
import matplotlib.pyplot as plt 
import matplotlib.colors as cl 
cl.Colormap('hsv') 
plt.plot([0,1,2,3,4], (SelectBreed['Base-BW'],SelectBreed['1-BW'],SelectBreed['2-BW'],SelectBreed['3-BW'],SelectBreed['4-End-BW'])) 
plt.axis([0, 4, 0, 100]) 
plt.xlabel('Day') 
plt.ylabel('Weight (g)') 
plt.title('Body Weight') 
plt.legend(SelectBreed['Number'], bbox_to_anchor=(1.1, 1.01)) 
plt.show() 

Что дает: graph

Так есть способ просто покажите, скажем, row1 (182-14), 3 (15-14) и 5 ​​(183-14)? Или, может быть, просто для того, чтобы начертить эти конкретные строки? Я проверил другие вопросы, и никто не относится к использованию. CSV-файла, как и я. Спасибо за любую помощь.

+0

может помочь, [этот ответ] (http://stackoverflow.com/questions/13428318/reading-rows-from-a-csv-file-in-python) – ThePredator

+1

Вы не показываете весь свой код, что такое 'SelectBreed', как именно вы читаете в своих данных? (Я не вижу функции или читателя csv, который делает это для вас). Как правило, нет универсальной функции, которая делает это. Лучше всего читать в csv-файле и хранить каждую строку в списке, т. Е. 'Line', в качестве списка, а затем нарисовать его как' plt.plot (x_values, line [i] 'где значения x кажутся днями (хотя ваш код называет «[1,2,3,4]» как дни. Возможно, я что-то пропустил, но это не похоже на то, что этот код должен привести к вашему результату. Тогда опять-таки многое зависит от того, что 'SelectBreed' – ljetibo

+0

Я обновил его, включив в него весь код, я не знал, нужно ли это или нет. Еще что-то новое для python. – Michael

ответ

1

Библиотека Pandas скалы для чтения файлов .csv, а затем их анализа. Используя пример набора данных из R,

import pandas as pd 
cw = pd.read_csv('ChickWeight.csv') 
cw.columns 

Out [166]: Индекс ([u'weight 'u'Time', u'Chick 'u'Diet '],' объект' = DTYPE)

cw[cw.Chick==1].plot('Time','weight') 

enter image description here

Сбор за исключением, что последняя строка: cw[cw.Chick==1] это все строки, для которых cw цыпленок == 1; pandas dataframes имеют метод plot (который matplotlib, я думаю, так будет знаком).

Вы также можете сделать сложные выборы из dataframe, есть некоторые хорошие связанные вопросы панд.

отредактировано для добавления: use a list of values to select rows from a pandas dataframe, вероятно, самый буквальный подход к вашему вопросу; Selecting rows from a Pandas dataframe with a compound (hierarchical) index довольно классно подходит для выбора, основанного на более чем одной колонке (постоянно появляется в многофакторных экспериментах).

+0

Выход для cw. столбцы не показывали, есть ли способ, которым вы можете его отредактировать? Спасибо. – Michael

+0

Спасибо, я проверю все это! – Michael

+1

... Результат в этом ответе, или когда вы запускали похожий скрипт? – cphlewis

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