各データフレームから列ごとに平均値を取り出し、棒グラフを作成したいです。
数が多くなってきたため、後々の事を考えforループで処理したいのですが上手くいかず教えていただきたい次第です。
python
1names = ['A', 'B', 'C', 'D', 'E', 'F'] 2head = list(range(7, 23, 3)) 3footer = list(range(15, -1, -3)) 4 5for (names, head, footer) in zip(names, head, footer): 6 locals()[names] = pd.read_excel('data.xlsx', header=head, usecols=[1,2], skipfooter=footer, names=['data1', 'data2']) 7 print(locals()[names]) 8
上のコードで、エクセルからA~Fの3行2列のデータフレームを取得します。
ここまではやりたいことが実現できています。
その後、棒グラフを作成するために各データフレームの列ごとに平均値を取りたいと考えています。
その際、データ数が少なければ以下のようにひたすら羅列していれば良かったのですが
データが多くなってしまうためforループで処理したいと考えています。
python
1#羅列する場合 2A_data1 = A['data1'].mean() 3A_data2 = A['data2'].mean() 4B_data1 = B['data1'].mean() 5B_data2 = B['data2'].mean() 6C_data1 = C['data1'].mean() 7C_data2 = C['data2'].mean() 8D_data1 = D['data1'].mean() 9D_data2 = D['data2'].mean() 10E_data1 = E['data1'].mean() 11E_data2 = E['data2'].mean() 12F_data1 = F['data1'].mean() 13F_data2 = F['data2'].mean() 14 15data1 = np.array([A_data1, B_data1, C_data1, D_data1, E_data1, F_data1]) 16data2 = np.array([A_data2, B_data2, C_data2, D_data2, E_data2, F_data2]) 17 18#以下グラフ作成のコード 19
下記のように空のリストを作って、
A~Fのデータフレームの中にあるデータの平均値をとり、それを空のリスト内に入れていけば羅列する場合と同じことができると思っているのですが、どうにも上手くいきません。
forループで回す場合にはどのように記述すれば良いのでしょうか。
すいませんが教えていただけないでしょうか。
Python
1#forループで回す場合 2data1 =[] 3data2 =[] 4 5for i in names: 6 d1 = locals()[i]['data1'].mean() 7 data1.append(d1) 8 d2 = locals()[i]['data2'].mean() 9 data2.append(d2) 10 11#以下グラフ作成のコード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/10 00:30
2022/02/10 01:37
2022/02/10 03:42