PandasのSeriesを扱う方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。
1.演習用プログラムのダウンロード
演習用プログラム( practice18.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice18.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。
2.ソースコードの表示
メモ帳を使って、演習用プログラム( 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の基礎> |


