どうも!僕です!
つか〇です!
pandasのデータ構造であるシリーズにおいて,
「Python,pandasの基礎① ~pandasの特徴とデータ構造「Series」~」
「Python,pandasの基礎② ~pandasのデータ構造「Series」における計算~」
で,基本的な扱いを紹介してきました.
本記事もpandasの基礎です!
今回は,シリーズをディクショナリ的な使い方をしてみましょう!
ディクショナリ的使い方
Seriesは,インデックスとデータで成り立ってますよね.
これって,ディクショナリのkeyとvalueの関係と似ていますよね.
このことから,シリーズをディクショナリと見立てて扱うことができます.
まずは,pandasとシリーズをインポートして,配列を作成しましょう!
import pandas as pd
from pandas import Series
obj = pd.Series([6, -9, 2, 1, 5], index=["b", "e", "a", "d", "c"])
obj
下記のようにシリーズ構造ができます.
b 6
e -9
a 2
d 1
c 5
dtype: int64
では,まず,このシリーズの中に「a」という文字列がインデックスにあるかを確認してみましょう.
"a" in obj
True
Trueが返されて,「a」が存在することがわかりました.
では,続いて「t」がこのシリーズのインデックスに含まれるかを確認してみましょう.
"t" in obj
False
こちらはFalseが返され,「t」が含まれていないことがわかりました.
この操作はディクショナリで行われる操作で,シリーズでも同様に扱うことができることがわかりますね.
何のデータがあるのかを知りたいときには便利そうですね!
ディクショナリからシリーズを作成
Pythonのディクショナリ形式のデータがもうすでにあるよ!,これシリーズにしたいよ!ってときもディクショナリ形式のデータを使って,シリーズを作成することができます.
以下のように滋賀県に関するデータについてのディクショナリを作成してみます.
(数値は何にも関係ありません.でたらめです.)
data = {"Otsu" : 40000, "Kusatsu": 35000, "Shigaraki": 5000, "Maibara": 15000}
data
{'Otsu': 40000, 'Kusatsu': 35000, 'Shigaraki': 5000, 'Maibara': 15000}
一旦,滋賀県の市町村を見てみましょう!
信楽は甲賀市として合併しています!
そんな話は置いておいて,ディクショナリ形式のデータを作成できました.
では,これをシリーズ構造のデータにしてみましょう.
obj2 = pd.Series(data)
obj2
Otsu 40000
Kusatsu 35000
Shigaraki 5000
Maibara 15000
dtype: int64
できましたね.
ディクショナリのkeyがインデックスになり,valueがデータそのものになりました.
個人的に,表っぽくてわかりやすいですね.
それで,元のディクショナリをただシリーズに渡しただけだと,ディクショナリでのkeyの順番がシリーズにも保たれます.
シリーズを作成するときに,インデックスの順番を指定して変えることもできます.
シリーズの引数に「index=」を渡して,名前と順番をしてすることで,上書きすることができます.
以下のようにやってみましょう.
city = ["Koka", "Otsu", "Kusatsu", "Shigaraki"]
obj3 = pd.Series(data, index=city)
obj3
Koka NaN
Otsu 40000.0
Kusatsu 35000.0
Shigaraki 5000.0
dtype: float64
「あれ?見たことないの混じってる...」
甲賀市のデータは,元のディクショナリデータになかったため,NaN(not a number,数字ではない)になっています.
このNaNのことを欠損値と呼びますが,これについては後日解説したいと思います.
データサイエンス的にかなり重要になるらしいのでじっくり説明してきます.
(ちなみに甲賀市と信楽がダブってるのは気にしないでください.)
また,米原市のデータは参照していないため,新しく作成したシリーズからは外れております.
米原市民の皆様!深い意味はないので,ご安心を!!
このように,シリーズでは,ディクショナリのように扱ったり,ディクショナリ形式のデータをシリーズにしたりとできます.
name属性
これまで,シリーズについて触れてきましたが,なんだか表みたいですよね.
Excelで扱うような表みたいですよね.
「この表に名前を付けられたらいいのに...」
それ,できます!
「name」というのを使えば,名前を付けられます.
しかも,インデックスにも名前が付けられます.
では,実際にやってみましょう.
obj3.name = "Shiga Prefecture" #滋賀県っていう名前を表に付けます
obj3.index.name = "City" #市って名前をインデックスにつけます
obj3
City
Koka NaN
Otsu 40000.0
Kusatsu 35000.0
Shigaraki 5000.0
Name: Shiga Prefecture, dtype: float64
出力の下に「Name」とあるのが,全体の名前です.
詳しく言うとシリーズオブジェクト自身の名前です.
(詳しくは調べてみよう!今はとりあえず流れだけで勘弁してください.)
で,インデックスの上にもちゃんとCityが付けられていますね.
このように,より表っぽく表現できるようになりました.
まとめ
pandasのシリーズについて,ディクショナリに関すること,シリーズオブジェクトの名前について行いました.
これでデータをかなり見やすくすることができると思います.
まだまだ先は長いですが一つずつできることを増やしていきましょう!
もっと学びたい!って方は,以下の書籍を参考にしてみてください!
一緒にデータマスターへの道を歩んでいきましょう!!
コメント