目次
Pandas
前回、Pythonでリストから辞書を作成する方法を紹介しました。
【Python基礎】リストから辞書を作成する方法
リスト 前回、Pythonのmatplotlibで2軸グラフで表示する軸の値を指定する方法と軸の値を回転させる方法を紹介しました。 今回はリストから辞書を作成する方法を紹介しま…
今回はPandasで行方向にデータを追加する方法を紹介します。
それでは始めていきましょう。
行方向にデータを追加する方法
Pandasで行方向にデータを追加するには「pd.concat([追加されるデータフレーム, 追加するデータフレーム], ignore_index=True, axis=True)」とします。
import pandas as pd
import numpy as np
row_num = 10
column_names = ["a", "b", "c", "d", "e"]
df = pd.DataFrame(columns = column_names)
rng = np.random.default_rng()
for r_num in range(row_num):
df_add = pd.DataFrame([rng.random(5)], columns = column_names)
df = pd.concat([df, df_add], ignore_index=True, axis="index")
print(df)
実行結果
a b c d e
0 0.046213 0.743657 0.606043 0.302487 0.567011
1 0.112566 0.393045 0.160092 0.589766 0.233152
2 0.760913 0.326675 0.982195 0.699518 0.524459
3 0.271887 0.911478 0.245720 0.718146 0.495690
4 0.822368 0.197988 0.312773 0.755291 0.603862
5 0.791818 0.005515 0.840528 0.431685 0.997411
6 0.385027 0.732381 0.414391 0.551805 0.654356
7 0.331006 0.755459 0.249483 0.811803 0.197102
8 0.543290 0.186989 0.432792 0.811367 0.116022
9 0.113921 0.574613 0.757338 0.052763 0.503663
「df = pd.DataFrame(columns = column_names)」で列名のみもったデータフレームを作成し、for文を使って1行ずつデータ(ランダムな5つの要素をもつデータフレーム)を追加しています。
ジェネレータを使った乱数の取得方法はこちらの記事で解説していますので、良かったらどうぞ。
【NumPy】ジェネレータを使ったランダムな数値の取得方法の紹介と使わない方法との比較[Python]
NumPy 前回、PythonのNumPyとSciPyで正規分布(ガウス分布)に従うランダムな値を取得する方法を紹介しました。 今回はNumPyでジェネレータを使ったランダムな数値の取…
注意するのは追加するのは「データフレーム」です。
Pandasでは1行、または1列のデータをもった「シリーズ」を作成することもできますが、シリーズを使うと「pd.concat()」でうまく連結することができません。
そこで今回は「df_add = pd.DataFrame([rng.random(5)], columns = column_names)」として5つのランダムな要素をもつデータフレームを作成し、「pd.concat()」で連結をしています。
またデータフレームで行のデータとするには二重の角括弧([[]])のリストが必要です。
NumPyの乱数ジェネレータでは1次元のリストが返ってくるため「[rng.random(5)]」としています。
もしこの角括弧を忘れた場合はエラーとなります。
import pandas as pd
import numpy as np
row_num = 10
column_names = ["a", "b", "c", "d", "e"]
df = pd.DataFrame(columns = column_names)
rng = np.random.default_rng()
for r_num in range(row_num):
df_add = pd.DataFrame(rng.random(5), columns = column_names)
df = pd.concat([df, df_add], ignore_index=True, axis="index")
print(df)
実行結果
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[1], line 13
10 rng = np.random.default_rng()
12 for r_num in range(row_num):
---> 13 df_add = pd.DataFrame(rng.random(5), columns = column_names)
14 df = pd.concat([df, df_add], ignore_index=True, axis="index")
16 print(df)
(中略)
ValueError: Shape of passed values is (5, 1), indices imply (5, 5)
次回はPandasで列を追加する方法を紹介します。
【Pandas】列方向にデータを追加する方法[Python]
Pandas 前回、Pandasで行方向にデータを追加する方法を紹介しました。 今回はPandasで列方向にデータを追加する方法を紹介します。 それでは始めていきましょう。 df[列…
ではでは今回はこんな感じで。
コメント