Pandas
前回、NumPyでマスクした配列を扱うmaモジュールを紹介しました。
あわせて読みたい


【NumPy】マスクした配列を扱うmaモジュール[Python]
NumPy 前回、正規化されたsinc関数を返すnp.sincを紹介しました。 今回はNumPyでマスクした配列を扱うmaモジュールを紹介します。 それでは始めていきましょう。 配列の…
今回はPandasでデータを追加する際に出るエラー「iloc cannot enlarge its target object」の対処法を紹介します。
それでは始めていきましょう。
Pandasに行のデータを追加
Pandasで列のデータを追加する場合、「df[列名] = データ」で新たな列のデータを追加することができます。
import pandas as pd
df = pd.DataFrame(columns=["A", "B", "C"])
df["D"] = [1, 2, 3]
print(df)
実行結果
A B C D
0 NaN NaN NaN 1
1 NaN NaN NaN 2
2 NaN NaN NaN 3
しかしながら行のデータを追加することはなかなか一筋縄ではいきません。
例えば「df.iloc[行のインデックス]=データ」とすると「IndexError: iloc cannot enlarge its target object」というエラーが出てしまいます。
また前にデータフレームの行方向にデータを追加する方法を紹介しました。
あわせて読みたい


【Pandas】行方向にデータを追加する方法[Python]
Pandas 前回、Pythonでリストから辞書を作成する方法を紹介しました。 今回はPandasで行方向にデータを追加する方法を紹介します。 それでは始めていきましょう。 行方…
ちなみにその方法を今回のケースで試してみるとこんな感じになります。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(columns=["A", "B", "C"])
df2 = pd.DataFrame([[1, 2, 3]], columns=["A", "B", "C"])
df = pd.concat([df1, df2])
print(df)
実行結果
A B C
0 1 2 3
これはこれでいいのですが、やはりデータを一度データフレームに変換する必要があることから少し手間がかかってしまいます。
今回は最初にデータの領域を確保する方法を紹介します。
最初にデータの領域を確保
先ほどの「pd.concat」を使う場合はデータの形状が不明な場合に有用ですが、最初からデータの量がわかっている時はその領域を確保してしまうのが有用です。
つまり最初に「np.zeros([行数, 列数])」を使って、「0」の配列をもつデータフレームを作成しておきます。
そしてデータを追加したい場所に対して、データを書き換えます。
import pandas as pd
import numpy as np
data = np.zeros([5, 3])
df = pd.DataFrame(data, columns=["A", "B", "C"])
print(data)
df.iloc[0] = [1, 2, 3]
print(df)
実行結果
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
A B C
0 1.0 2.0 3.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 0.0
4 0.0 0.0 0.0
この方法はあるデータフレームのデータを処理をして他のデータフレームに移し替えるといった際にも有用です。
import pandas as pd
data = {"A":[1, 2, 3, 4, 5],
"B":[2, 4, 6, 8, 10],
"C":[3, 6, 9, 12, 15]}
df = pd.DataFrame(data)
df_new = pd.DataFrame(np.zeros(df.shape), columns=["A", "B", "C"])
for row in range(len(df.index)):
df_new.iloc[row] = df.iloc[row] + 100
print(df_new)
実行結果
A B C
0 101.0 102.0 103.0
1 102.0 104.0 106.0
2 103.0 106.0 109.0
3 104.0 108.0 112.0
4 105.0 110.0 115.0
次回はPandasで累積和と累積積を求める方法、さらに累積平均値を求める方法を紹介します。
ではでは今回はこんな感じで。
コメント