Как я могу построить несколько фреймов данных с несколькими субплотами? - PullRequest
0 голосов
/ 08 апреля 2019

Я новичок в Pandas и пытаюсь перебрать каталог из 8 идентично структурированных .txt файлов на моем локальном диске, поместить каждый из них в свой собственный Pandas DataFrame и затем отобразить каждый из них как свой subplot ,

Файлы не имеют заголовка и выглядят так (но с гораздо большим количеством строк):

0.01 100
0.02 150
0.03 225

Вот мой код Python:

import glob
import pandas as pd
from matplotlib import pyplot as plt

path = '/path/to/data/files/2015*' #dir has 8 files beginning with 2015
files = glob.glob(path)

for file in files:
    f = open(file, 'r')

    df = pd.read_csv(f, sep=' ', header=None, )

    fig = plt.figure(figsize=(10,8))
    subs = plt.subplots(8, sharex=True)    
    df.plot(subplots=True)
    plt.show()

Что странно, так это то, что он создает структуру из 8 участков, но не отображает никаких данных, нанесенных на них. Не знаю почему.

РЕДАКТИРОВАТЬ: Я только что заметил, когда я читал один из файлов в DataFrame в качестве теста, он создает df со структурой ниже:

0 0.01 100 N/A
1 0.02 150 N/A
2 0.03 225 N/A

Похоже, код добавляет N/A к каждой строке, а также индекс в качестве первого столбца.

1 Ответ

0 голосов
/ 08 апреля 2019

Вы делаете несколько вещей восемь раз, что вам нужно сделать только один раз: создать фигуру, создать вспомогательные сюжеты и показать график.Единственное, что вам нужно сделать в каждом цикле, это выбрать правильные оси и построить данные.

Попробуйте это:

import glob
import pandas as pd
from matplotlib import pyplot as plt

path = '/path/to/data/files/2015*' #dir has 8 files beginning with 2015
files = glob.glob(path)

fig = plt.figure(figsize=(10,8))
subs, axes = plt.subplots(8, sharex=True)    

for i, file in enumerate(files):
    f = open(file, 'r')
    df = pd.read_csv(f, sep=' ', header=None, )

    plt.sca(axes[i])
    df.plot(subplots)

plt.show()
...