Я хотел бы правильно структурировать фрейм данных панд, чтобы я мог построить его по своему усмотрению. Насколько я могу определить, лучший способ структурировать данные - это использовать сводную таблицу, но у меня возникают проблемы с тем, что, я думаю, я буду называть «остаточными уровнями».
# Trying to determine why pivot table keeps level "Test 1" in data frame
import itertools as it
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Generate some data; covert dict to dataframe
MyDates = list(it.repeat(['1/1/19', '2/1/19', '3/1/19', '4/1/19', '5/1/19'],
5))
MyDates_flat = [item for sublist in MyDates for item in sublist]
MyDates_flat.sort()
SampleSites = ['Site 1', 'Site 2', 'Site 3', 'Site 4', 'Site 5'] * 5
Test1 = list(np.random.randint(0, 10, 25))
Test2 = list(np.random.randint(0, 10, 25))
Test3 = list(np.random.randint(0, 10, 25))
MyData = {'Date': MyDates_flat, 'Sample Location': SampleSites,
'Test 1': Test1, 'Test 2': Test2, 'Test 3': Test3}
DF1 = pd.DataFrame(MyData)
Однажды сводкатаблица используется, «Тест 1» остается и не позволяет мне строить столбцы для Site 1
, Site 2
и т. д.
# Filter for columns that you want to eventually plot; use pivot_table to -
# restructure data for plotting.
DF2 = DF1.filter(['Date', 'Sample Location', 'Test 1'], axis=1)
DF_Test1 = DF2.pivot_table(index='Date',
columns='Sample Location')
# How to get rid of "Test 1" over Site columns?
# Plot each site as its own series (line)
fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
plt.plot(DF_Test1.index, DF_Test1['Site 1'], color='red')
plt.plot(DF_Test1.index, DF_Test1['Site 2'], color='blue')
plt.plot(DF_Test1.index, DF_Test1['Site 3'], color='green')
# etc.
Если я экспортирую фрейм данных DF_Test1
как файл Excel и удаляюВ строке с «Тестом 1» я могу построить столбцы для Сайта 1, Сайта 2 и т. д. Как я могу сделать это в Python? Я пытался использовать dropplevel и drop без успеха. Спасибо.