Python 無料で独習 データの並び替えの方法 Pandas入門08 #02

Python
この記事は約4分で読めます。

とりあえず、前回でエクセルデータの読み込みは
無事完了しましたので、今日はその続きからやります。

import pandas as pd
pd.set_option('display.max_columns', None) # 最大表示列数
pd.set_option('display.max_rows', 5) # 最大表示行数
df = pd.read_excel('sample.xlsx',sheet_name='実績管理表')
df
	売上日	社員ID	氏名	性別	商品分類	商品名	単価	数量	売上金額
0	2020-01-04	a023	河野 利香	女	ボトムス	ロングパンツ	7000	8	56000
1	2020-01-05	a003	石崎 和香菜	女	ボトムス	ジーンズ	6000	10	60000
...	...	...	...	...	...	...	...	...	...
222	2020-12-30	a047	上瀬 由和	男	ボトムス	ハーフパンツ	3000	3	9000
223	2020-12-31	a036	西尾 謙	男	ボトムス	ロングパンツ	7000	10	70000
224 rows × 9 columns

DataFrameの並び替え

sort_valuesメソッドを使って並び替えをします。
人口の少ない順に並び替えします。
小さいものから大きいものに並び替えをすることを
昇順に並び替えるといいます。

df.sort_values(by='売上金額')
降順に並び替えする場合は
ascendingという引数にfalseを渡します。
df.sort_values(by='売上金額',ascending=False)

小さいものから大きいものに並び替えをすることを
昇順に並び替えといいます。
文字列もルールがありまして、
仮名やカタカナだと「あ」から「ん」
アルファベットの場合aからzまでが昇順になります。
逆が降順です。

DataFrameで複数のカラムの並び替え

複数のカラムを一括で並び替え可能です。
例として昇順で性別順、氏名順、
降順で売上金額を並び替えます。

df.sort_values(by=['性別','氏名','売上金額'],ascending=[True,True,False])

売上日	社員ID	氏名	性別	商品分類	商品名	単価	数量	売上金額
219	2020-12-26	a052	井上 真	女	アウター	ダウン	18000	4	72000
2	2020-01-05	a052	井上 真	女	アウター	ジャケット	10000	7	70000
...	...	...	...	...	...	...	...	...	...
153	2020-09-12	a036	西尾 謙	男	ボトムス	ハーフパンツ	3000	2	6000
29	2020-02-25	a036	西尾 謙	男	トップス	シャツ	4000	1	4000
224 rows × 9 columns

​

行方向の並び替え

まずシンプルなデータフレームをつくります。

df_ax= pd.DataFrame({'col01':[1, 2, 3], 'col02':[4, 5, 6], 'col03':[7, 8, 9]}
,index=['idx01', 'idx02','idx03'])
df_ax
	col01	col02	col03
idx01	1	4	7
idx02	2	5	8
idx03	3	6	9

数位、文字などが混在している場合はできませんが、
データが揃っていると行の中での並び替えも可能です。
idx01の行の中を降順で並び替えます。

df_ax.sort_values(by='idx01',ascending=False,axis=1)
	col03	col02	col01
idx01	7	4	1
idx02	8	5	2
idx03	9	6	3

列方向の並び替え

並び替える対象をcol01、axisに0を渡すと
col01が降順に並び替えができます。

df_ax.sort_values(by='col01',ascending=False,axis=0)
	col01	col02	col03
idx03	3	6	9
idx02	2	5	8
idx01	1	4	7

エクセルの読み込みにはかなり苦戦しましたが、
並び替えなどはスムーズに理解できました。

コメント

タイトルとURLをコピーしました