1
複数のデータフレームから年齢列のヒストグラム分布をプロットしようとしています。 以下は私が試しているコードですが、それは空白のプロットになります。複数のデータフレームを連結してヒストグラムをプロットする
import pandas as pd
import glob
import matplotlib.pyplot as plt
%matplotlib inline
filelist = glob.glob('/Users/kadb/Desktop/participants_tsv_files/*.tsv')
# fig = plt.figure()
ax = fig.add_subplot(111)
# ax.xaxis.set_ticks(df.index)
# ax.xaxis.set_ticklabels(df['g'])
plt.figure()
for file in filelist:
df = pd.read_table(file)
if 'age' in df.columns:
df = df[~df["age"].isin(["n/a"])] # remove n/a values
result = result.append(df,ignore_index=True)
result = pd.concat([df,result], axis=1)
plt.hist(result, normed=1, facecolor='green')
例のTSVファイル:
participant_id gender age physioSampling restAcquisiotion
sub-01 M 26 50 after_cuedSGT
sub-02 M 21 50 after_cuedSGT
sub-03 M 22 50 after_cuedSGT
sub-04 M 23 N/A after_cuedSGT
sub-05 M 21 50 before_cuedSGT
sub-06 M 19 n/a before_cuedSGT
sub-07 F 18 50 before_cuedSGT
sub-08 F 21 50 before_cuedSGT
sub-09 M 20 40-60 before_cuedSGT
sub-10 F 21 50 before_cuedSGT
sub-11 F 20 50 before_cuedSGT
sub-12 M 21 50 before_cuedSGT
sub-13 F 31 50-60 before_cuedSGT
ために年齢を集めます'ステートメントは、複数の' age'カラムを作成するのではなく、1つの 'age'カラムに複数の行を追加しようとしているためです。また、私はちょうど終わりに一度プロットしたいと思いますか?もしそうなら、 'plt.hist'は' for'ループの中でインデントされるべきではありません。 –
複数のヒストグラムをプロットするか、1つだけ(すべてのテーブルのすべての年齢層)プロットしますか? –
ループの前に結果リストを初期化してください(つまり、 'results = []')。その後、すべての 'df'が結果リストに追加された後に' pandas.concat'を実行しますが、ループからそれを引き出します。 – CiaranWelsh