データ分析用ライブラリpandasには1次元のデータ構造Series(シリーズ)と2次元のデータ構造Dataframe(データフレーム)の2種類のデータ構造がある。Series(シリーズ)の作成にはpandas.Seriesを用いる。
ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。
import pandas as pd
1. 書式
pandas.Seriesの書式は以下の通り。
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False)
引数 | 意味 |
---|---|
data | 用いるデータ。ndarray、イテラブルオブジェクト、辞書、データフレームなど |
index | ロウ名(行名)。データにロウ名がない場合、必要に応じて指定する。指定が無ければ0からの数字の列(0, 1, 2・・・)が用いられる。 |
dtype | データタイプの指定 |
name | シリーズ名の指定。文字列または数値 |
copy | 入力データからコピーするかどうか。入力データがndarrayまたはseriesの場合に影響する。 Falseの場合参照渡しとなる。Trueの場合コピーを作成し参照渡しとならない。 |
2. シリーズの作成
pd.Seriesで引数にデータを与えるとデータシリーズを作成できる。データの形式としてはリスト、タプル、ndarray、辞書、データシリーズなどを用いることができる。
データとして1行のリストを与えた場合。indexは与えていないため、行名は0からの連番の数字になる。
import pandas as pd ser = pd.Series([204128, 136000, 20968, 54130]) print(ser)
実行結果
0 204128 1 136000 2 20968 3 54130 dtype: int64
行名を指定する場合、indexを与える。
import pandas as pd ser = pd.Series(data=[204128, 136000, 20968, 54130], index=['USA', 'China', 'Russia', 'Japan']) print(ser)
実行結果
USA 204128 China 136000 Russia 20968 Japan 54130 dtype: int64
nameでシリーズに名前が付けられる。
import pandas as pd ser = pd.Series(data=[204128, 136000, 20968, 54130], index=['USA', 'China', 'Russia', 'Japan'], name='GDP') print(ser)
実行結果
USA 204128 China 136000 Russia 20968 Japan 54130 Name: GDP, dtype: int64
キーと値からなる辞書型データを用いるとキーが行名となる。
import pandas as pd gdp = {'USA':204128, 'China':136000, 'Russia':20968, 'Japan':54130} ser = pd.Series(gdp, name='GDP') print(ser)
実行結果
USA 204128 China 136000 Russia 20968 Japan 54130 Name: GDP, dtype: int64
入力データがnumpy.nearrayやSeriesの場合、copyを指定しないとデフォルトのcopy=Falseとなる。この場合参照渡しとなるため、元のデータの変更がSeriesのデータに反映される。
import numpy as np import pandas as pd gdp = np.array([204128, 136000, 20968, 54130]) country = ['USA', 'China', 'Russia', 'Japan'] ser = pd.Series(data=gdp, index=country, name='GDP') gdp[0] = 355555 print(ser)
実行結果
USA 355555 China 136000 Russia 20968 Japan 54130 Name: GDP, dtype: int32
copy=Trueとすると、データのコピーが作成されるため、元データの変更がSeriesに反映されなくなる。
import numpy as np import pandas as pd gdp = np.array([204128, 136000, 20968, 54130]) country = ['USA', 'China', 'Russia', 'Japan'] ser = pd.Series(data=gdp, index=country, name='GDP', copy=True) gdp[0] = 355555 print(ser)
実行結果
USA 204128 China 136000 Russia 20968 Japan 54130 Name: GDP, dtype: int32
3. リファレンス
使用したバージョン:Python 3.8.12/pandas 1.4.0
0 件のコメント:
コメントを投稿