Как добавить линейный график для среднего значения по нескольким группам, используя groupby в Python - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть код (ниже), который члены переполнения стека помогли мне собрать вместе, чтобы взять csv-подобный и использовать для l oop для нескольких строк (сгруппированных по определенному значению в одном из столбцов).

Example Data Table

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

Желаемый результат здесь The desired outcome figure.

код, который я имею здесь

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

#read CSV
df=pd.read_csv('/Users/fabienlaugier/Documents/GeoComp/Data/Profiles.csv')

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

#Set up figure that will plot multiple line plots over each Group
fig, ax = plt.subplots()

for Profile, group in df.groupby('SectionName'):
    group.plot(x='Xposition', y='Value', ax=ax, label=Profile, c='grey')
ax.set_title('SectionName')
ax.set_xlabel("Xposition")
ax.set_ylabel("Value")

plt.show()

1 Ответ

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

Это мой подход с pivot:

s = df.pivot('Xposition', 'SectionName','Value')
# in case of duplicated data:
# s = df.pivot_table(index='Xposition', columns='SectionName', values='Value', aggfunc='mean')

ax = s.plot(color='gray')
s.mean(1).plot(ax=ax, color='b', linestyle='--', label='Mean')
ax.legend()

Вывод:

enter image description here

Примечание : если вы удалите color='gray' в s.plot, вы получите:

enter image description here

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