こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
サマリー
- PythonライブラリであるPandas・Seriesの基本操作を解説
- プログラム構築時に辞書代わりとして活用していただければと思います。
目次
Pandasとは|Series・DataFrame
Pandasとは、データサイエンス・データ分析および機械学習タスクを実行する上で最も広く使用されているオープンソースのPythonライブラリです。
Pandasは「Series」と「DataFrame」という代表的なデータ構造を有するのが特徴です。
Series | 1次元のラベル付き配列 |
---|---|
DataFrame | ラベル付きの軸(行・列)を有する表形式の二次元データ構造 |
データの準備
実際にPandas Seriesの記述方法を見ていきましょう。黒枠にコード、グレー枠にコードの出力結果を示してます。
下記のライブラリは事前に読み込んだ後に、各々の操作を実行しましょう。
import pandas
from pandas import Series
Pandas・Series操作|属性情報の取得
値を出力
sr = Series([1,3,5,7])
sr.values
# 出力結果
# array([1, 3, 5, 7])
indexを出力
sr = Series([1,3,5,7])
sr.index
# 出力結果
# RangeIndex(start=0, stop=4, step=1)
arrayを出力
sr =Series([1,3,5,7])
sr.array
# 出力結果
# <PandasArray>
# [1, 3, 5, 7]
# Length: 4, dtype: int64
dtypeを出力
sr =Series([1,3,5,7])
sr.dtype
# 出力結果
# dtype('int64')
行数・列数を取得
sr = Series([1,3,5,7])
sr.shape
# 出力結果
# (4,)
バイト数を取得
sr = Series([1,3,5,7])
sr.nbytes
# 出力結果
# 32
Pandas・Series操作|添字の操作
添字を指定し値取得
sr = Series([1,3,5,7])
sr[1]
# 出力結果
# 3
添字を指定し値の範囲取得
sr = Series([1,3,5,7])
sr[1:3]
# 出力結果
# 1 3
# 2 5
# dtype: int64
値を代入
sr = Series([1,3,5,7])
sr[0] = 9999
# 出力結果
# 0 9999
# 1 3
# 2 5
# 3 7
# dtype: int64
条件式でフィルタして値抽出
sr = Series([1,3,5,7])
sr[sr>4]
# 出力結果
# 2 5
# 3 7
# dtype: int64
Pandas・Series操作|Indexの操作
Indexを作成
sr = Series([1,3,5,7],index=["A","B","C","D"])
# 出力結果
# A 1
# B 3
# C 5
# D 7
# dtype: int64
Indexを指定し値を出力
sr = Series([1,3,5,7],index=["A","B","C","D"])
sr["C"]
# 出力結果
# 5
Indexに名前をつける
sr = Series([1,3,5,7],index=["A","B","C","D"])
sr.index.name = 'あいうえお'
# 出力結果
# あいうえお
# A 1
# B 3
# C 5
# D 7
# dtype: int64
Seriesに名前をつける
sr = Series([1,3,5,7],index=["A","B","C","D"])
sr.name = 'あいうえお'
# 出力結果
# A 1
# B 3
# C 5
# D 7
# Name: あいうえお, dtype: int64
階層構造があるIndexを作成
sr = Series([1,3,5,7],index=[[1,1,2,2],["A","B","C","D"]])
# 出力結果
# 1 A 1
# 1 B 3
# 2 C 5
# 2 D 7
# dtype: int64
値を並び替え
sr = Series([3,1,5,4])
# 昇順の場合:ascending = True
# 降順の場合:ascending = False
sr.sort_values(ascending=False)
# 出力結果
# 2 5
# 3 4
# 0 3
# 1 1
# dtype: int64
indexで並び替え
sr = Series([3,1,5,4])
# 昇順の場合:ascending = True
# 降順の場合:ascending = False
sr.sort_index(ascending=True)
# 出力結果
# 0 3
# 1 1
# 2 5
# 3 4
# dtype: int64
値の大きさでランク付け
sr = Series([100,50,30,80])
sr.rank()
# 出力結果
# 0 4.0
# 1 2.0
# 2 1.0
# 3 3.0
# dtype: float64
Pandas・Series操作|演算
Series同士を足し合わせ
sr1 = Series([1,3,5,7])
sr2 = Series([8,6,4,2])
sr1 + sr2
# 出力結果
# 0 9
# 1 9
# 2 9
# 3 9
# dtype: int64
Pandas・Series操作|データの追加・削除
値を除外
sr = Series([3,1,5,4])
sr.pop(0)
# 出力結果
# 1 1
# 2 5
# 3 4
# dtype: int64
値を追加
sr1 = Series([3,1,5,4])
sr2 = Series([9])
sr1.append(sr2,ignore_index=True)
# 出力結果
# 0 3
# 1 1
# 2 5
# 3 4
# 4 9
# dtype: int64
Pandas・Series操作|変換操作
Seriesから辞書型に変換
sr = Series([1,3,5,7],index=["A","B","C","D"])
sr.to_dict()
# 出力結果
# {'A': 1, 'B': 3, 'C': 5, 'D': 7}
辞書型からにSeries変換
dic = {'A': 1, 'B': 3, 'C': 5, 'D': 7}
Series(dic)
# 出力結果
# A 1
# B 3
# C 5
# D 7
# dtype: int64
SeriesからListに変換
sr = Series([1,3,5,7])
Series.to_list(sr)
# 出力結果
# [1, 3, 5, 7]
Seriesからnumpyに変換
sr = Series([1,3,5,7])
Series.to_numpy(sr)
# 出力結果
# array([1, 3, 5, 7])
SeriesからDataFrameに変換
sr = Series([1,3,5,7])
pandas.DataFrame(sr,columns=["SeriesName"])
複数のSeriesをDataFrameに変換
sr1 = Series([1,3,5,7])
sr2 = Series([2,4,6,8])
# 列方向に連結する場合:axis=1
# 行方向に連結する場合:axis=0
pd.concat([sr1,sr2],axis=1)
Seriesを複製
sr1 = Series([1,3,5,7])
sr2 = sr1.copy()
print(sr2)
# 出力結果
# 0 1
# 1 3
# 2 5
# 3 7
# dtype: int64
【参考】Pythonでのデータ前処理・分析・可視化
当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。
Pythonを活用したデータ処理・分析手法一覧
【参考】Pythonとは・できること一覧
Pythonでできること・副業案件の探し方
「Pythonで実現できるお役立ち情報」を多数配信中!Python習熟者向けに「おすすめのPython副業・フリーランス案件の探し方」についてもご紹介してます。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら