Seriesの作成
Pythonのリスト、dict、NumPy配列からPandas Seriesを作成し、index属性とvalues属性を確認します。
「Seriesの作成」はCoddyKit上の無料Pandas & NumPy Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPandas & NumPy Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Pandas & NumPy Academyコースには全4レッスンが含まれています。
Pandas Seriesとは何ですか
Pandas Seriesは、整数、浮動小数点数、文字列、Pythonオブジェクト、さらには他のSeriesなど、任意のデータ型を格納できる1次元のラベル付き配列です。各要素のラベルを持つカスタムindexを備えたNumPy配列と考えるとよいでしょう。値に説明的な名前が必要なデータ分析では、このindexによってSeriesは通常の配列よりもはるかに強力になります。
import pandas as pd
import numpy as np
s = pd.Series([10, 20, 30, 40])
print(s)
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64PythonリストからSeriesを作成する
Pythonリストをpd.Series()に渡すと、デフォルトの整数RangeIndex(0, 1, 2, ...)を持つSeriesが作成されます。index=パラメーターでカスタムのインデックスラベルを指定することもできます。indexのリストの長さはデータの長さと一致していなければなりません。ラベルには文字列、整数、日付、その他のハッシュ可能なPythonオブジェクトを使用できます。
import pandas as pd
temps = pd.Series([22.5, 19.0, 25.3, 17.8],
index=['Mon', 'Tue', 'Wed', 'Thu'])
print(temps)
# Mon 22.5
# Tue 19.0
# Wed 25.3
# Thu 17.8
# dtype: float64辞書からSeriesを作成する
Pythonのdictはpd.Series()に直接渡せます。dictのキーがインデックスラベルになり、値がデータになります。データにすでに意味のあるラベルがある場合、Seriesを作成する最も自然な方法の1つです。作成されるSeriesは、dictの挿入順(Python 3.7以降)に並びます。
import pandas as pd
stock = {'AAPL': 182.5, 'GOOG': 141.3, 'MSFT': 378.9}
s = pd.Series(stock)
print(s)
# AAPL 182.5
# GOOG 141.3
# MSFT 378.9
# dtype: float64NumPy配列からSeriesを作成する
NumPyのndarrayはデータ引数として渡せます。Seriesのdtypeはndarrayのdtypeと一致します。内部のデータはNumPy配列として保存されるため、すべてのNumPy ufuncをSeriesに対して直接使用できます。データ準備のロジックを書き直さずに、既存のNumPyコードをPandasへ移行できます。
import pandas as pd
import numpy as np
arr = np.linspace(0, 1, 5)
s = pd.Series(arr, index=['a', 'b', 'c', 'd', 'e'])
print(s)
# a 0.00
# b 0.25
# c 0.50
# d 0.75
# e 1.00.index属性と.values属性
s.indexはラベルを含むIndexオブジェクトを返します。s.valuesはデータ値を格納した内部のNumPy配列を返します。どちらも相互運用に不可欠です。s.valuesを任意のNumPy関数に渡し、元のindexを使って結果をSeriesに戻せます。s.dtypeでは値のデータ型を確認できます。
import pandas as pd
s = pd.Series([3, 1, 4], index=['x', 'y', 'z'])
print(s.index) # Index(['x', 'y', 'z'], dtype='object')
print(s.values) # [3 1 4]
print(s.dtype) # int64Seriesの名前とIndexの名前
Seriesには値が何を表すかを示す.name属性を設定でき、indexにもラベルが何を表すかを示す.name属性を設定できます。これらの名前は、SeriesをDataFrameの列に代入したときや、グラフのラベルに表示されます。s.name = 'price'または作成時のname=で設定できます。
import pandas as pd
s = pd.Series([1.2, 3.4, 5.6],
index=['a', 'b', 'c'],
name='measurement')
s.index.name = 'label'
print(s)
# label
# a 1.2
# b 3.4
# c 5.6
# Name: measurement, dtype: float64スカラーSeriesを作成する
単一のスカラー値を明示的なindexとともにpd.Series()に渡すと、すべての要素がそのスカラー値と等しいSeriesが作成されます。これはNumPyのnp.full()に似ており、実データのSeriesから引いたり比較したりする定数の基準Seriesを作るのに便利です。
import pandas as pd
s = pd.Series(5, index=['a', 'b', 'c', 'd'])
print(s)
# a 5
# b 5
# c 5
# d 5
# dtype: int64自動的なインデックス調整
Pandas Seriesの最も強力な機能の1つが自動的なインデックス調整です。2つのSeriesを加算すると、Pandasは計算前にラベルで両者を揃えます。一方のSeriesにしか存在しないラベルでは、結果がNaNになります。これにより、NumPy配列の操作で起こりやすい、気づきにくい位置ずれのエラーを防げます。
import pandas as pd
a = pd.Series([1, 2], index=['x', 'y'])
b = pd.Series([10, 20], index=['y', 'z'])
print(a + b)
# x NaN
# y 12.0
# z NaNSeriesの長さと形状を確認する
len(s)は要素数を返します。s.shapeはNumPyの慣例に沿ったタプル(n,)を返します。s.sizeはlen(s)と同じです。分析を始める前に、データの読み込みで想定した行数が得られたかを検証するため、パイプラインの最初にこれらを確認しましょう。
import pandas as pd
s = pd.Series(range(10))
print(len(s)) # 10
print(s.shape) # (10,)
print(s.size) # 10
print(s.ndim) # 1Seriesを他の型に変換する
Seriesはs.tolist()でPythonリストに、s.to_numpy()またはs.valuesでNumPy配列に、s.to_dict()でdictに変換できます。これらの変換は、Pandasオブジェクトを受け付けないライブラリとの相互運用や、結果をJSONまたはCSVとしてシリアライズする場合に役立ちます。
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.tolist()) # [10, 20, 30]
print(s.to_numpy()) # [10 20 30]
print(s.to_dict()) # {'a': 10, 'b': 20, 'c': 30}SeriesとDataFrameの列
DataFrameの1列はSeriesです。df['col']にアクセスすると、PandasはDataFrameと同じindexを持つSeriesを返します。逆に、nameを持つSeriesは、そのままDataFrameの列として挿入できます。この関係を理解すると、Seriesの操作とDataFrameの操作をスムーズに使い分けられます。
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
col = df['a'] # Series
print(type(col)) # <class 'pandas.core.series.Series'>
print(col.values) # [1 2 3]理解度チェック
このレッスンで学んだPandas Seriesの作成方法について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、SeriesはNumPy ndarrayを基盤とする1次元のラベル付き配列であること、リスト、dict、NumPy配列、スカラーから作成できること、そしてインデックスの調整によって、2つのSeries間のラベルベースの算術演算が自動的に処理されることを学びました。次は、.locでラベルによりSeriesの要素にアクセスする方法と、.ilocで位置によりアクセスする方法を扱います。
よくある質問
「Seriesの作成」レッスンは無料ですか?
はい。「Seriesの作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Pandas & NumPy Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Pandas & NumPy Academyコースには全4レッスンが含まれています。
「Seriesの作成」で何を学びますか?
Pythonのリスト、dict、NumPy配列からPandas Seriesを作成し、index属性とvalues属性を確認します。 ブラウザで直接実行するハンズオンコードでPandas & NumPy Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Pandas & NumPy Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPandas & NumPy Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Seriesの作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPandas & NumPy Academyレッスンでコードを書いて実行できますか?
はい。すべてのPandas & NumPy Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。