Как построить несколько столбцов в одном поле в Pandas - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь нанести несколько столбцов (10) одного фрейма данных на один блокпост с пандами и matplotlib. Каждый столбец был создан путем объединения серии Pandas в один фрейм данных.

В конечном графике должно быть четыре прямоугольника из четырех кадров данных. Почему четыре кадра данных? Я думал, что будет проще.

Я пытался:

r1TopDf.boxplot()

но это дает 10 коробок. По одному на каждый столбец. Плюс я бы лучше использовал

matplotlib.pyplot.boxplot( ....)

потому что это позволяет мне добавлять несколько «сюжетных вызовов» в одну фигуру, поскольку это конечная цель. Возможно, это возможно и с помощью dataframe.boxplot (), но я не знаю, как.

Мои данные выглядят так:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

r1TopDf = pd.DataFrame()

for row in vectors_toPlot[<condition>].itertuples():
    topRC1 = row.column
    topRC1Resampled = topRC1.resample(...)
    topRC1Rolling = topRC1Resampled.rolling(...)
    r1TopDf = pd.concat([r1TopDf, topRC1Rolling], axis=1)


    print(topRC1.dtypes)

    print(type(topRC1))

Выход:

0    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
1    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
2    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
3    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
4    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
5    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
6    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
7    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
8    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
9    float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
print(type(r1TopDf))
<class 'pandas.core.frame.DataFrame'>

print(r1TopDf.dtypes)
0    float64
1    float64
2    float64
3    float64
4    float64
5    float64
6    float64
7    float64
8    float64
9    float64
dtype: object

print(r1TopDf.head())
                         0          1          2          3          4  \
00:01:00.001121  7779200.0  7779200.0  7779200.0  7779200.0  7779200.0   
00:01:00.021121  7480000.0  7480000.0  7480000.0  7480000.0  7480000.0   
00:01:00.041121  7480000.0  7480000.0  7480000.0  7480000.0  7480000.0   
00:01:00.061121  7779200.0  7792800.0  7779200.0  7779200.0  7779200.0   
00:01:00.081121  7779200.0  7792800.0  7792800.0  7779200.0  7792800.0   

                         5          6          7          8          9  
00:01:00.001121  7779200.0  7779200.0  7779200.0  7779200.0  7779200.0  
00:01:00.021121  7480000.0  7480000.0  7480000.0  7480000.0  7480000.0  
00:01:00.041121  7480000.0  7480000.0  7480000.0  7480000.0  7480000.0  
00:01:00.061121  7779200.0  7779200.0  7779200.0  7779200.0  7792800.0  
00:01:00.081121  7792800.0  7779200.0  7792800.0  7792800.0  7792800.0 

Используя мой предпочтительный подход с plt, я получаю:

plt.boxplot(r1TopDf)
TypeError: 'Series' object is not callable
...