для l oop создать гистограмму из pd.DataFrames - PullRequest
0 голосов
/ 22 апреля 2020

Доброе утро, пожалуйста, посмотрите мой код. У меня есть pandas фрейм данных с некоторыми наборами данных. Я создам гистограмму для каждого из наборов данных, используя for-l oop.

К сожалению, l oop прервется после 3-го запуска. Первый набор данных будет удален. Другая проблема возникает в функции. Функция не может преобразовать число с плавающей точкой в ​​целое число. Если я напечатаю «min_val» в функции, консоль выдаст мне значение NaN ...

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

def compute_histogram_bins(data, desired_bin_size):

    min_val = np.min(data)
    max_val = np.max(data)
    min_boundary = -1.0 * (min_val % desired_bin_size - min_val)
    max_boundary = max_val - max_val % desired_bin_size + desired_bin_size
    n_bins = int((max_boundary - min_boundary) / desired_bin_size) + 1
    bins = np.linspace(min_boundary, max_boundary, n_bins)
    return bins



data = pd.read_csv('data.csv')
data.head()
dataset_1 = data['1'].values
dataset_2 = data['2'].values
dataset_3 = data['3'].values
dataset_4 = data['4'].values
dataset_5 = data['5'].values
dataset_6 = data['6'].values
dataset_7 = data['7'].values
dataset_8 = data['8'].values
dataset_9 = data['9'].values
dataset_10 = data['10'].values
dataset_11 = data['11'].values
dataset_12 = data['12'].values
dataset_13 = data['13'].values
dataset_14 = data['14'].values
dataset_15 = data['15'].values

df=pd.DataFrame({'dataset 1': dataset_1, 'dataset 2': dataset_2, 'dataset 3': dataset_3, 'dataset 4': dataset_4, 'dataset 5': dataset_5, 'dataset 6': dataset_6, 'dataset 7': dataset_7, 'dataset 8': dataset_8})# 'dataset 9': dataset_9, 'dataset 10': dataset_10, 'dataset 11': dataset_11, 'dataset 12':dataset_12, 'dataset 13': dataset_13, 'dataset 14': dataset_14 })


# Layout für Diagramme
fig, big_axes = plt.subplots( figsize=(15.0, 15.0) , nrows=2, ncols=1, sharey=True) 

for row, big_ax in enumerate(big_axes, start=1):
    big_ax.set_title("Subplot row %s \n" % row, fontsize=16, color='orange')

    # Turn off axis lines and ticks of the big subplot 
    # obs alpha is 0 in RGBA string!
    big_ax.tick_params(labelcolor=(1.,1.,1., 0.0), top='off', bottom='off', left='off', right='off')
    # removes the white frame
    big_ax._frameon = False



# daten schreiben aus Datenframe
num=0
for i in df:
    num+=1

    n_bins = compute_histogram_bins(df[i],10) # call function
    #print(data)
    ax = fig.add_subplot(2,8,num)
    #ax.scatter(df[i],df[i])
    ax.hist(df[i], bins=n_bins) # loop doesn´t work. loop aborted after 3rd run
    plt.xlim(-2,2)
    plt.ylim(0,70)
    ax.set_title('Plot title ' + i, fontsize=8)

fig.set_facecolor('w')
plt.tight_layout()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...