Как создать распределенный участок для столбцов в pandas кадре данных? - PullRequest
2 голосов
/ 03 февраля 2020

Я использую Seaborn в блокноте Jupyter для построения гистограмм следующим образом:

import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

df = pd.read_csv('CTG.csv', sep=',')

sns.distplot(df['LBE'])

У меня есть массив столбцов со значениями, для которых я хочу построить гистограмму, и я попытался построить гистограмму для каждой из них:

continous = ['b', 'e', 'LBE', 'LB', 'AC']

for column in continous:
    sns.distplot(df[column])

И я получил такой результат - только один график с (предположительно) всеми гистограммами:

enter image description here

Мой желаемый результат - несколько гистограмм, которые выглядят следующим образом (по одной для каждой переменной):

enter image description here

Как я могу это сделать?

1 Ответ

3 голосов
/ 04 февраля 2020

Вставьте plt.figure() перед каждым вызовом sns.distplot().

Вот пример с plt.figure():

enter image description here

Вот пример без plt.figure():

enter image description here

Полный код:

# imports
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [6, 2]

%matplotlib inline

# sample time series data
np.random.seed(123)
df = pd.DataFrame(np.random.randint(-10,12,size=(300, 4)), columns=list('ABCD'))
datelist = pd.date_range(pd.datetime(2014, 7, 1).strftime('%Y-%m-%d'), periods=300).tolist()
df['dates'] = datelist 
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
df.iloc[0]=0
df=df.cumsum()

# create distplots
for column in df.columns:
    plt.figure()             # <==================== here!
    sns.distplot(df[column])
...