Pandas.Seriesの基礎 – 【Pythonプログラミング3 ~Pandas編~】

PROGRAMMING

PandasのSeriesを扱う方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。

1.演習用プログラムのダウンロード

演習用プログラム( practice18.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice18.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。


2.ソースコードの表示

メモ帳を使って、演習用プログラム( practice18.py )を開きます。

practice18.py

practice18.py

3.Pandas と Series について

Pandas とは、データ解析を容易にする機能を持つPythonのデータ解析ライブラリです。
CSVファイルや、Excelファイルのような表形式データを扱うときにもとても便利です。
Pandas には2つの主要なデータ構造があり、Series(シリーズ)が1次元のデータ、DataFrame(データフレーム)が2次元のデータに対応します。
本章では、Series について解説します。

4.Seriesの作成

① リストからSeriesを作成(インデックスの指定なし)

コマンドプロンプト で practice18.py を実行します。
プログラムを実行する方法は、こちらの記事『ファイルに保存されたプログラムの実行』を参照します。
以下のように表示されます。

#
# リストからSeriesを作成(インデックスの指定なし)
#

*** データをリストで用意 ***

['レモン', 'マスカット', 'メロン', 'マンゴー', 'みかん']

*** リストからSeriesを作成  pandas.Series(data引数) ***

0      レモン
1    マスカット
2      メロン
3     マンゴー
4      みかん
dtype: object
データの数:5
<class 'pandas.core.series.Series'>

解説:
左端に表示された 0、1、2、3、4 の数値がインデックスです。
今回のようにインデックスの指定がないとゼロから始まる連番の数値が自動設定されます。

5つの果物の名前(レモン、マスカット、メロン、マンゴー、みかん)が入ったリストを使って、Seriesを作成しました。

左端に表示された 0、1、2、3、4 の数値がインデックスになります。
今回はSeriesを作成するときにインデックスを指定していないので、ゼロから始まる連番が自動で付けられます。

インデックス
0 レモン
1 マスカット
2 メロン
3 マンゴー
4 みかん

プログラムソースを確認します。


25 # リストを用意
26 print("\n*** データをリストで用意 ***\n")
27 list1 = ['レモン','マスカット','メロン','マンゴー','みかん']
28 print(list1)
29 
30 # リストからSeriesを作成
31 print("\n*** リストからSeriesを作成  pandas.Series(data引数) ***\n")
32 sri1 = pd.Series(data = list1)
33 

42 #終了1
43 sys.exit()

27行目で、Seriesに入れるデータをリストで用意しています。
32行目で、dataパラメータにデータの入ったリストを指定してSeriesを作成しています。

② リストからSeriesを作成(インデックスの指定あり)

ソースコード #終了1 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# リストからSeriesを作成(インデックスの指定あり)
#

*** データをリストで用意 ***

['レモン', 'マスカット', 'メロン', 'マンゴー', 'みかん']

*** インデックスをリストで用意 ***

['A0003', 'A0006', 'A0002', 'A0004', 'A0001']

*** リストからSeriesを作成  pandas.Series(data引数, index引数) ***

A0003      レモン
A0006    マスカット
A0002      メロン
A0004     マンゴー
A0001      みかん
dtype: object
データの数:5
<class 'pandas.core.series.Series'>

解説:
インデックスの部分が、リストで用意したインデックスになっています。

今回は、5つのインデックス [A0003、A0006、A0002、A0004、A0001] が入ったリストも使って、Seriesを作成しました。
インデックスの部分が、リストで用意したインデックスになりました。

インデックス
A0003 レモン
A0006 マスカット
A0002 メロン
A0004 マンゴー
A0001 みかん

プログラムソースを確認します。


57 # リストを用意
58 print("\n*** データをリストで用意 ***\n")
59 list1 = ['レモン','マスカット','メロン','マンゴー','みかん']
60 print(list1)
61 
62 # インデックスをリストで用意
63 print("\n*** インデックスをリストで用意 ***\n")
64 idx = ['A0003','A0006','A0002','A0004','A0001']
65 print(idx)
66 
67 # Seriesを作成
68 print("\n*** リストからSeriesを作成  pandas.Series(data引数, index引数) ***\n")
69 sri2 = pd.Series(data = list1, index = idx)
70 

78 #終了2
79 sys.exit()

64行目で、インデックスをリストで用意しています。
69行目で、dataパラメータにデータの入ったリスト、indexパラメータにインデックスの入ったリストを指定してSeriesを作成しています。

③ 辞書からSeriesを作成

ソースコード #終了2 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# 辞書からSeriesを作成
#

*** データを辞書で用意
{'札幌': 1952000, '東京': 9821798, '大阪': 2691000}

*** 辞書からSeriesを作成  pandas.Series(data引数) ***

札幌    1952000
東京    9821798
大阪    2691000
dtype: int64
データの数:3
<class 'pandas.core.series.Series'>

解説:
辞書のキー部分(県庁所在地)がインデックスになります。

辞書からSeriesを作成しています。
辞書のキー部分(県庁所在地)がインデックスになります。

インデックス
札幌 1952000
東京 9821798
大阪 2691000

プログラムソースを確認します。


 93 # 辞書を用意
 94 print("\n*** データを辞書で用意")
 95 dict1 = {'札幌' : 1952000, '東京' : 9821798, '大阪' : 2691000}
 96 print(dict1)
 97 
 98 # Seriesを作成
 99 print("\n*** 辞書からSeriesを作成  pandas.Series(data引数) ***\n")
100 sri3 = pd.Series(data = dict1)
101 

109 #終了3
110 sys.exit()

95行目で、Seriesに入れるデータを辞書で用意しています。
100行目で、dataパラメータにデータの入った辞書を指定してSeriesを作成しています。

④ Seriesにカラム名をつける

カラム名とは、データの列につける名前のことです。

ソースコード #終了3 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesにカラム名をつける
#

*** カラム名を '商品名' にしてSeriesを作成  pandas.Series(data引数, index引数, name引数) ***

A0003      レモン
A0006    マスカット
A0002      メロン
A0004     マンゴー
A0001      みかん
Name: 商品名, dtype: object

*** 作成済みのSeriesにカラム名をつける ***

カラム名をつける前の状態
札幌    1952000
東京    9821798
大阪    2691000
dtype: int64

カラム名 '人口' をつける  Series.rename('人口')
札幌    1952000
東京    9821798
大阪    2691000
Name: 人口, dtype: int64

Seriesを作成するときにカラム名をつける方法と、既存のSeriesにカラム名をつける方法があります。

インデックス 商品名
A0003 レモン
A0006 マスカット
A0002 メロン
A0004 マンゴー
A0001 みかん
インデックス 人口
札幌 1952000
東京 9821798
大阪 2691000

プログラムソースを確認します。


124 # Seriesを作成
125 print("\n*** カラム名を '商品名' にしてSeriesを作成  pandas.Series(data引数, index引数, name引数) ***\n")
126 sri2 = pd.Series(data = list1, index = idx, name = '商品名')
127 print(sri2)
128 
129 # 作成済みのSeriesにカラム名をつける
130 print("\n*** 作成済みのSeriesにカラム名をつける ***")
131 
132 print("\nカラム名をつける前の状態")
133 print(sri3)
134 
135 print("\nカラム名 '人口' をつける  Series.rename('人口')")
136 sri3 = sri3.rename('人口')
137 print(sri3)
138 
139 #終了4
140 sys.exit()

126行目で、Seriesを作成するときに name引数を指定することでカラム名を設定しています。
136行目で、作成済のSeriesにカラム名を設定しています。

5.Seriesのソート

① 要素でソート

ソースコード #終了4 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesのソート(要素でソート)
#

ソート前の状態
札幌    1952000
東京    9821798
大阪    2691000
Name: 人口, dtype: int64

*** 人口を昇順でソート ***  Series.sort_values()
札幌    1952000
大阪    2691000
東京    9821798
Name: 人口, dtype: int64

*** 人口を降順でソート ***  Series.sort_values(ascending = False)
東京    9821798
大阪    2691000
札幌    1952000
Name: 人口, dtype: int64

Seriesの要素(データ部分)でソート(並べ替え)しています。

ソート前の状態
インデックス 人口
札幌 1952000
東京 9821798
大阪 2691000
人口を昇順でソート
インデックス 人口
札幌 1952000
大阪 2691000
東京 9821798
人口を降順でソート
インデックス 人口
東京 9821798
大阪 2691000
札幌 1952000

プログラムソースを確認します。


157 print("\n*** 人口を昇順でソート ***  Series.sort_values()")
158 result = sri3.sort_values()
159 print(result)
160 
161 print("\n*** 人口を降順でソート ***  Series.sort_values(ascending = False)")
162 result = sri3.sort_values(ascending = False)
163 print(result)
164 
165 #終了5
166 sys.exit()

158行目で、sort_values()を使って要素(人口のデータ)を昇順でソートしています。
162行目で、降順でソートしています。降順のときは、sort_values(ascending = False)とします。

② インデックスでソート

ソースコード #終了5 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesをソートする(インデックスでソート)
#

ソート前の状態
A0003      レモン
A0006    マスカット
A0002      メロン
A0004     マンゴー
A0001      みかん
Name: 商品名, dtype: object

*** 昇順でソート ***  Series.sort_index()
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

*** 降順でソート ***  Series.sort_index(ascending = False)
A0006    マスカット
A0004     マンゴー
A0003      レモン
A0002      メロン
A0001      みかん
Name: 商品名, dtype: object

Seriesのインデックス部分でソート(並べ替え)しています。

ソート前の状態
インデックス 商品名
A0003 レモン
A0006 マスカット
A0002 メロン
A0004 マンゴー
A0001 みかん
インデックスを昇順でソート
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0006 マスカット
インデックスを降順でソート
インデックス 商品名
A0006 マスカット
A0004 マンゴー
A0003 レモン
A0002 メロン
A0001 みかん

プログラムソースを確認します。


183 print("\n*** 昇順でソート ***  Series.sort_index()")
184 result = sri2.sort_index()
185 print(result)
186 
187 print("\n*** 降順でソート ***  Series.sort_index(ascending = False)")
188 result = sri2.sort_index(ascending = False)
189 print(result)
190 
191 #終了6
192 sys.exit()

184行目で、sort_index()を使ってインデックスを昇順でソートしています。
188行目で、降順でソートしています。降順のときは、sort_index(ascending = False)とします。

6.Seriesからデータを取り出す

① インデックスを使って取り出す(loc)

ソースコード #終了6 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesからデータを取り出す(インデックスを使用)
#

インデックスでソート(昇順)しておきます
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

インデックスを使って取り出す(loc)

*** A0001 のデータを取り出す ***
loc['A0001']

みかん
<class 'str'>

*** スライスを使い A0001 から A0003 のデータを取り出す ***
loc['A0001':'A0003']

A0001    みかん
A0002    メロン
A0003    レモン
Name: 商品名, dtype: object
<class 'pandas.core.series.Series'>

*** リストを使い A0001 と A0006 のデータを取り出す ***
loc[['A0001','A0006']]

A0001      みかん
A0006    マスカット
Name: 商品名, dtype: object
<class 'pandas.core.series.Series'>

インデックスを使ってSeriesからデータを取り出す場合は loc を使います。
ひとつ、もしくは複数のデータを取り出すことができます。

インデックスでソート(昇順)しておきます
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0006 マスカット

プログラムソースを確認します。


214 # A0001 のデータを取り出す
215 print("\n*** A0001 のデータを取り出す ***")
216 print("loc['A0001']\n")
217 result = sri2.loc['A0001']
218 print(result)
219 print(type(result))
220 
221 # スライスを使い A0001 から A0003 のデータを取り出す
222 print("\n*** スライスを使い A0001 から A0003 のデータを取り出す ***")
223 print("loc['A0001':'A0003']\n")
224 result = sri2.loc['A0001':'A0003']
225 print(result)
226 print(type(result))
227 
228 # リストを使い A0001 と A0006 のデータを取り出す
229 print("\n*** リストを使い A0001 と A0006 のデータを取り出す ***")
230 print("loc[['A0001','A0006']]\n")
231 result = sri2.loc[['A0001','A0006']]
232 print(result)
233 print(type(result))
234 
235 #終了7
236 sys.exit()

217行目は、ひとつのインデックス(A0001)を使ってひとつのデータを取り出しています。
224行目は、スライスを使いインデックスの範囲を指定してデータを取り出しています。
231行目は、インデックスのリスト['A0001','A0006']を使って複数のデータを取り出しています。

② 要素の連番を使って取り出す(iloc)

ソースコード #終了7 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesからデータを取り出す(要素の連番を使用)
#

A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

要素の連番(ゼロ始まり)を使って取り出す(iloc)

*** 連番 0 のデータを取り出す ***
iloc[0]

みかん
<class 'str'>

*** 連番 1 から 3 のデータ(スライス表記で指定)***
iloc[1:4]

A0002     メロン
A0003     レモン
A0004    マンゴー
Name: 商品名, dtype: object
<class 'pandas.core.series.Series'>

*** 繰り返し文(for)を使いすべてのデータを取り出す ***

みかん
メロン
レモン
マンゴー
マスカット

要素(データ)にはゼロから始まる連番がついています。
この連番を使ってSeriesからデータを取り出す場合は iloc を使います。
ひとつ、もしくは複数のデータを取り出すことができます。

要素の連番(セロ始まり) インデックス 商品名
0 A0001 みかん
1 A0002 メロン
2 A0003 レモン
3 A0004 マンゴー
4 A0006 マスカット

プログラムソースを確認します。


256 # 連番 0 のデータを取り出す
257 print("\n*** 連番 0 のデータを取り出す ***")
258 print("iloc[0]\n")
259 result = sri2.iloc[0]
260 print(result)
261 print(type(result))
262 
263 # スライスを使い 連番 1 から 3 のデータを取り出す
264 print("\n*** 連番 1 から 3 のデータ(スライス表記で指定)***")
265 print("iloc[1:4]\n")
266 result = sri2.iloc[1:4]
267 print(result)
268 print(type(result))
269 
270 # 繰り返し文(for)を使いすべてのデータを取り出す
271 print("\n*** 繰り返し文(for)を使いすべてのデータを取り出す ***\n")
272 for i in range(len(sri2)):
273   data = sri2.iloc[i]
274   print(data)
275 
276 #終了8
277 sys.exit()

259行目で、連番 0 のデータを取り出しています。
266行目で、スライスを使って 連番 1 から 3 のデータを取り出しています。
272行目から274行目では、ループ文と組み合わせてSeries内のデータをすべて取り出しています。

③ 条件を指定して取り出す

ソースコード #終了8 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesからデータを取り出す(条件を指定)
#

抽出元のSeries
札幌    1952000
東京    9821798
大阪    2691000
Name: 人口, dtype: int64

*** 2,000,000以上のデータを取り出す ***
Series[Series >= 2000000]

東京    9821798
大阪    2691000
Name: 人口, dtype: int64


抽出元のSeries
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

*** 4文字以上のデータを取り出す(str.len)***
Series[Series.str.len() >= 4]

A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

*** 先頭が'マ'で始まるデータを取り出す(str.startswith)***
Series[Series.str.startswith('マ')]

A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

*** 'ン'を含むデータを取り出す(str.contains)***
Series[Series.str.contains('ン')]

A0002     メロン
A0003     レモン
A0004    マンゴー
Name: 商品名, dtype: object

Seriesの数値データを比較演算子を使って条件設定したり、
文字数、先頭文字が何か、文字が含まれるか否かを条件にしてデータを取り出しています。

抽出元のSeries( sri3 )
インデックス 人口
札幌 1952000
東京 9821798
大阪 2691000
抽出元のSeries( sri2 )
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0006 マスカット

プログラムソースを確認します。


294 # 2,000,000以上のデータを取り出す
295 print("\n*** 2,000,000以上のデータを取り出す ***")
296 print("Series[Series >= 2000000]\n")
297 result = sri3[sri3 >= 2000000]
298 print(result)
299 
300 print("\n\n抽出元のSeries")
301 print(sri2)
302 
303 # 4文字以上のデータを取り出す(str.len)
304 print("\n*** 4文字以上のデータを取り出す(str.len)***")
305 print("Series[Series.str.len() >= 4]\n")
306 result = sri2[sri2.str.len() >= 4]
307 print(result)
308 
309 # 先頭が"マ"で始まるデータを取り出す(str.startswith)
310 print("\n*** 先頭が'マ'で始まるデータを取り出す(str.startswith)***")
311 print("Series[Series.str.startswith('マ')]\n")
312 result = sri2[sri2.str.startswith('マ')]
313 print(result)
314 
315 # "ン"を含むデータを取り出す(str.contains)
316 print("\n*** 'ン'を含むデータを取り出す(str.contains)***")
317 print("Series[Series.str.contains('ン')]\n")
318 result = sri2[sri2.str.contains('ン')]
319 print(result)
320 
321 #終了9
322 sys.exit()

297行目では、数値データを比較して条件に合ったデータを取り出しています。
306行目では、文字数を条件にしてデータを取り出しています。(str.len)
312行目では、文字データの先頭が何で始まるかを条件にしてデータを取り出しています。(str.startswith)
318行目では、データに含まれる文字列を条件にしてデータを取り出しています。(str.contains)

7.Seriesのデータを追加、変更、削除する

① Seriesにデータを追加

ソースコード #終了9 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesにデータを追加
#

追加前の状態
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
Name: 商品名, dtype: object

*** A0005 イチゴ を追加する ***
Series[インデックス] = "値"

A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0006    マスカット
A0005      イチゴ
Name: 商品名, dtype: object

解説:
Seriesの末尾に追加されます。

*** 追加後にインデックスでソート ***

A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0005      イチゴ
A0006    マスカット
Name: 商品名, dtype: object

値にインデックスをつけてデータを追加します。
追加したデータはSeriesの末尾に追加されますので、必要に応じてインデックスでソートします。

追加前の状態
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0006 マスカット
A0005 イチゴ を追加
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0006 マスカット
A0005 イチゴ
インデックスでソート
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0005 イチゴ
A0006 マスカット

プログラムソースを確認します。


339 print("\n*** A0005 イチゴ を追加する ***")
340 print("Series[インデックス] = \"値\"\n")
341 sri2['A0005'] = "イチゴ"
342 print(sri2)
343 
344 print("\n解説:")
345 print("Seriesの末尾に追加されます。")
346 
347 print("\n*** 追加後にインデックスでソート ***\n")
348 sri2 = sri2.sort_index()
349 print(sri2)
350 
351 #終了10
352 sys.exit()

341行目で、インデックス('A0005')と値("イチゴ")を指定して追加しています。
348行目で、インデックスでソートしています。

② Seriesのデータを変更

ソースコード #終了10 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesのデータを変更
#

変更前の状態
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0005      イチゴ
A0006    マスカット
Name: 商品名, dtype: object

*** A0005 のイチゴ を バナナ に変更する ***
Series[インデックス] = "値"

A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0005      バナナ
A0006    マスカット
Name: 商品名, dtype: object

指定したインデックスの値を変更します。
Seriesに、指定したインデックスが存在するとデータの変更になり、存在しないとデータの追加になります。

変更前の状態
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0005 イチゴ
A0006 マスカット
A0005 のイチゴ を バナナ に変更
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0005 バナナ
A0006 マスカット

プログラムソースを確認します。


369 print("\n*** A0005 のイチゴ を バナナ に変更する ***")
370 print("Series[インデックス] = \"値\"\n")
371 sri2['A0005'] = "バナナ"
372 print(sri2)
373 
374 #終了11
375 sys.exit()

371行目で、インデックス 'A0005' のデータを "バナナ" に変更しています。

③ Seriesのデータを削除

ソースコード #終了11 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

#
# Seriesのデータを削除
#

削除前の状態
A0001      みかん
A0002      メロン
A0003      レモン
A0004     マンゴー
A0005      バナナ
A0006    マスカット
Name: 商品名, dtype: object

*** A0006 を削除する ***
Series.drop(インデックス)

A0001     みかん
A0002     メロン
A0003     レモン
A0004    マンゴー
A0005     バナナ
Name: 商品名, dtype: object

drop()の引数にインデックスを指定することで削除します。

削除前の状態
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0005 バナナ
A0006 マスカット
A0006 を削除
インデックス 商品名
A0001 みかん
A0002 メロン
A0003 レモン
A0004 マンゴー
A0005 バナナ

プログラムソースを確認します。


392 print("\n*** A0006 を削除する ***")
393 print("Series.drop(インデックス)\n")
394 sri2 = sri2.drop('A0006')
395 print(sri2)
396 
397 #終了12
398 sys.exit()

394行目で、インデックス 'A0006' のデータを削除しています。

8.Seriesをファイルに出力

① Excelファイルに出力

ソースコード #終了12 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。

#
# SeriesをExcelファイルに出力
#

Excelファイル名:C:\Python\practice18.xlsx

*** Excelファイルに出力  DataFrame.ExcelWriter ***

A0001     みかん
A0002     メロン
A0003     レモン
A0004    マンゴー
A0005     バナナ
Name: 商品名, dtype: object

practice18.xlsx を開いて中身を確認します。

プログラムソースを確認します。


412 filename = dirHome + r"\practice18.xlsx"
413 print("\nExcelファイル名:" + filename)
414 
415 # Excelファイルに出力
416 print("\n*** Excelファイルに出力  DataFrame.ExcelWriter ***\n")
417 print(sri2)
418 with pd.ExcelWriter(filename,
419                     mode   = 'w',         # 書き込みモード
420                     engine = 'openpyxl'   # 書き込みにopenpyxlを使用
421                    ) as writer:
422   sri2.to_excel(writer, 
423                 sheet_name = '商品一覧',  # シート名
424                 index      = True)        # インデックスを出力する
425 
426 sys.exit()

Excelファイルに出力する場合は、DataFrame.ExcelWriter を使います。
418行目で、Excelのファイル名を指定しています。
419行目で、書き込みモード(mode = 'w')にしています。
420行目で、書き込みにはopenpyxlを使用するようにしています。
423行目で、シート名を商品一覧にしています。
424行目で、Excelファイルにインデックス部分を出力する場合は True を設定します。

<iniファイルの読み書き Pandas.Seriesの基礎 Pandas.DataFrameの基礎>
タイトルとURLをコピーしました