0Pricing
Pandas & NumPy Academy · レッスン

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: int64

Pythonリストから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: float64

NumPy配列から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)   # int64

Seriesの名前と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     NaN

Seriesの長さと形状を確認する

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)     # 1

Seriesを他の型に変換する

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Seriesの作成
  2. ラベルベースと位置ベースのアクセス
  3. Seriesのベクトル化演算
  4. 便利なSeriesメソッド
← Pandas & NumPy Academyに戻る