とりあえず、前回でエクセルデータの読み込みは
無事完了しましたので、今日はその続きからやります。
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
エクセルの読み込みにはかなり苦戦しましたが、
並び替えなどはスムーズに理解できました。
コメント