Как сделать гистограмму для каждой строки Pandas кадра данных? - PullRequest
0 голосов
/ 25 января 2020

Использую ли я для l oop? Нужно ли использовать iterrows ()?

x = df.T[0]
y = df2.T[0]
plt.hist(x, bins=[-3.0, -2.0, -1.0, 0, 1.0, 2.0, 3.0], alpha=0.5, label='x')
plt.hist(y, bins=[-3.0, -2.0, -1.0, 0, 1.0, 2.0, 3.0], alpha=0.5, label='y')
plt.legend(loc='upper right')
plt.show()

Как мне сделать df.T [i + 1]?

Пример исходных данных (обратите внимание, я не снимал с экрана имена столбцов, поскольку они содержали конфиденциальную информацию): data

Я пытаюсь сделать это для каждой строки (это делается с данными из первой строки): визуализация

Ответы [ 2 ]

0 голосов
/ 25 января 2020

На мой взгляд, единственным приемлемым решением является создание гистограммы для каждой строки отдельно . Сначала определите корзины в отдельной переменной:

bins=[-3.0, -2.0, -1.0, 0, 1.0, 2.0, 3.0]

Затем, например, для строки 0 вы можете выполнить:

df.iloc[0].hist(bins=bins);

Обратите внимание на тянущийся ;, чтобы избежать дополнительной распечатки (по крайней мере, в Jupyter ).

Попытка наложить в одну картинку данные из более чем 2 строк сделает эту картинку абсолютно нечитаемой. И обратите внимание, что у вас есть целых 107 строк в вашем DataFrame.

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

df.iloc[0:5].T.hist(bins=bins, sharey=True, layout=(1, 5), figsize=(12, 3));

Результат (для данных примера):

enter image description here

Затем повторите вышеуказанный код для каждого последовательного набора из 5 строки.

0 голосов
/ 25 января 2020

Поскольку у вас есть pandas фрейм данных, вы можете использовать pandas graphi c tools. Проверьте этот пример:

# import modules
import pandas as pd
import matplotlib.pyplot as plt

# Data frame creation
df = pd.DataFrame([[0, 1], [1, 1], [-1, 0], [0, -2], [2, 0], [-3, -2], [2, 0], [2, 1], [3, 0], [0, -1], [1, 1], [0, 0],
                   [1, 2], [0, 0], [1, -1], [0, -3], [-1, -2], [1, 0], [0, -2]], columns=['column_1', 'column_2'])
num_bins = 5  # Change this number as you need

# Create separate histograms
ax = df.hist(bins=num_bins)

# Create overlapped histograms
ax = df['column_1'].hist(bins=num_bins, label='column_1')
ax = df['column_2'].hist(bins=num_bins, label='column_2')
plt.legend(loc='upper right')
title_obj = plt.title('Overlapped Histogram', color='dimgrey')

Проверьте эту ссылку для получения подробной информации: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.hist.html

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