データ解析支援ライブラリPandas
前回はデータ解析支援ライブラリPandasで、同じ行名や列名が含まれている場合の行データ、列データの呼び出し方を解説しました。
そこで分かったのは、やっぱり同じ名前を使うのはよろしくないということ。
ということで行名や列名を変更するにはどうしたらいいか解説をしていきます。
まずは準備から。
使用するデータは前回と同じデータを使いましょう。
データの読み込み方はこんな感じ。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df
実行結果
ではでは試していきましょう。
行名、列名を全部変える方法
まずは行名を全部変えてみます。
その場合は行名を取得する「.index」にリストを指定します。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
df
実行結果
列名を全部変更するには同様に「.columns」にリストを指定します。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df.columns = ["a", "b", "c", "d", "e"]
df
実行結果
ちなみに数が合わないとエラーがでるので注意してください。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
df
実行結果
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-a7c8f32abd50> in <module>
3 df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
4
----> 5 df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
6
7 df
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in __setattr__(self, name, value)
5190 try:
5191 object.__getattribute__(self, name)
-> 5192 return object.__setattr__(self, name, value)
5193 except AttributeError:
5194 pass
pandas/_libs/properties.pyx in pandas._libs.properties.AxisProperty.__set__()
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in _set_axis(self, axis, labels)
688
689 def _set_axis(self, axis, labels):
--> 690 self._data.set_axis(axis, labels)
691 self._clear_item_cache()
692
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in set_axis(self, axis, new_labels)
181 raise ValueError(
182 "Length mismatch: Expected axis has {old} elements, new "
--> 183 "values have {new} elements".format(old=old_len, new=new_len)
184 )
185
ValueError: Length mismatch: Expected axis has 10 elements, new values have 9 elements
特定の行、列の名前を変更する
特定の行、列の名前を変更するには「.rename」を用います。
まずは行名を変更してみます。
その場合は「.rename(index={“変更前の行名”: “変更後の行名”})」です。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df = df.rename(index={"data1-1": "A"})
df
実行結果
次に列名を変更してみます。
列名を変更する場合は「.rename(columns={“変更前の列名”: “変更後の列名”})」です。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df = df.rename(columns={"value1-1": "A"})
df
実行結果
ちなみにカンマで繋げることで複数の行、列の名前を一度に変更することも可能です。
例えば2つの列名を一度に変更する場合は「.rename(columns={“変更前の列名1”: “変更後の列名1”, “変更前の列名2”: “変更後の列名2”})」という感じです。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df = df.rename(columns={"value1-1": "A", "value1-5": "E"})
df
実行結果
また特定の行と列を一度に変更することも可能です。
その場合は「.rename(index={“変更前の行名”: “変更後の行名”}, columns={“変更前の列名”: “変更後の列名”})」となります。
import pandas as pd
df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
df = df.rename(index={"data1-5": "E"}, columns={"value1-1": "A"})
df
実行結果
今回は行名、列名を変更する方法を解説しました。
これで複数のデータフレームを連結する際、先に列名、行名を変更して、列名、行名を被らないようにできるようになりました。
次回からは少し機械学習を見据えて、pandasを使ったデータ処理の方法を学んでいきたいと思います。
最初はnanというデータの解説とダミーデータのファイルを生成するプログラムに、nanをランダムに挿入するように改良してみたいと思います。
ということで今回はこんな感じで。
コメント