Как правильно использовать для l oop для построения нескольких строк из CSV в python? - PullRequest
3 голосов
/ 11 апреля 2020

Я нахожусь в процессе обучения Python (Basi c вопрос идет), и у меня есть много данных, которые получаются в результате некоторых анализов в виде файлов CSV, которые выглядят следующим образом:

Example data table

Я пытаюсь воссоздать график ниже (в настоящее время я делаю такие вещи в Excel, и с объемом выходных данных и сложностью визуализаций, я хочу сделать вещи более эффективный.

Plot I am trying to recreate

Я пытался использовать концепцию For Loops для построения линии для каждого отдельного «SectionName» в этом столбце, но явно отсутствует что-то.

#read CSV
df=pd.read_csv('/Users/F/Documents/Data/LinesLoopTest.csv')

#Make Variables from dataframe columns
Value = df['Value']
Position = df['Xposition']
Section = df['SectionName']

#Setup Figure
fig = plt.figure(figsize=(6,3))
ax1 = fig.add_subplot(1,1,1)
ax1.set_title('Sections')
ax1.set_xlabel("XPosition")
ax1.set_ylabel("Value")

#plot lines by SectionName
for name in ['A', 'B', 'C']:
    plt.plot(Position, Value)

plt.show()

Я понимаю, что это простой вопрос, я просто не нашел объяснения, где я мог бы на самом деле понять процесс до такой степени, что я могу воссоздать его и затем построить на нем.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Я опоздал, поэтому я сделал «копию / вставную» версию ответа Шелдора (его ответ должен быть одобрен)

import pandas as pd
import matplotlib.pyplot as plt 

# intialise data of lists. 
data = {'SectionName':['A','A','A', 'B','B','B', 'C','C','C'], 
        'Xpos':[1, 2, 3, 1, 2, 3, 1, 2, 3], 
        'Val':[0.2, 0.4, 0.5, 0.4, 1.3, 0.2, 1.2, 1.9, 1.8]} 

# Create DataFrame 
df = pd.DataFrame(data) 

fig, ax = plt.subplots()

for section, group in df.groupby('SectionName'):
    group.plot(x='Xpos', y='Val', ax=ax, label=section)
plt.show()
1 голос
/ 11 апреля 2020

Вы можете использовать groupby на SectionName и затем строить группы

fig, ax = plt.subplots()

for section, group in df.groupby('SectionName'):
    group.plot(x='Xposition', y='Value', ax=ax, label=section)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...