23
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pandasでよく使う23選

Last updated at Posted at 2024-10-12

はじめに

Pandasでよく使う処理をまとめる。使用する例は下記。

日付 購入店 種類 名称 数量 単価 価格
0 2024-01-04 A 家電 電球 4 1000 4000
1 2024-02-06 A 家電 電子レンジ 1 50000 50000
2 2024-03-10 A 家電 テレビ 1 150000 150000
3 2024-05-06 B 家電 洗濯機 1 200000 200000
4 2024-05-04 B 家電 エアコン 1 180000 180000
5 2024-07-10 B 家電 照明器具 1 10000 10000
6 2024-10-13 B 家電 電池 5 300 1500
7 2024-01-06 C 家具 椅子 4 10000 40000
8 2024-02-07 C 家具 1 50000 50000
9 2024-03-10 D 家具 タンス 1 70000 70000
10 2024-06-10 D 家具 布団 2 30000 60000
11 2024-10-06 D 家具 2 5000 10000
12 2024-07-04 C 文具 シャープペンシル 3 600 1800
13 2024-08-09 C 文具 ボールペン 3 300 900
14 2024-10-10 C 文具 消しゴム 5 100 500
15 2024-05-06 A 文具 ノート 10 100 1000
16 2024-07-03 B 文具 ノート 10 100 1000
17 2024-04-12 B 文具 ボールペン 1 300 300

よく使う操作23種類

No 定義 意味
1 df.shape 行列の数
2 df.index 行名
3 df.columns 列名
4 df.dtypes 列の種類
5 df['列名'].unique() 特定の列のパラメータ種類
6 df['列名'].value_counts() 特定の列のパラメータの集計
7 df[['列名1','列名2','列名3']] 列の切り取り。リストで列を列挙
8 df.head(行数) 先頭から指定した行数
9 df.tail(行数) 終端から指定した行数
10 df.iloc[ 行start:行end , 列start:列end ] 行列の切り取り。行、列ともスライスで表記
11 df.T 行と列の入れ替え
12 df.sum() 各列の集計。列を絞ることもできる。
13 df.sort_values('列名', ascending=False/True,ignore_index=False/True) ソート
ascending=False(昇順)/True(降順)
ignore_index=False(index変更無)/True(index変更有)
14 df[df['A'].isin(['a','b'])] フィルタ:A列が'a'か'b'の文字列
15 df[df['A'].str.contains('a')] フィルタ:A列で'a'を含む文字列
16 df[df['A'].str.endswith('a')] フィルタ:A列で'a'で終わるの文字列
17 df[df['A'].str.startswith('a')] フィルタ:A列で'a'で始まるの文字列
18 df[df['A'].str.match('...')] フィルタ:A列で3文字の文字列(正規表現)
19 df.query('式') フィルタ:query('式')でフィルタした行を切り取り
20 df.iloc[df['列名'].idxmax()] 指定列の最大値の行を切り取り
21 df.iloc[df['列名'].idxmin()] 指定列の最小値の行を切り取り
22 df.fillna(数値 or 文字列) nanを指定した数値、文字列へ一括変換する
23 df.to_markdown()
df.to_string()
df.to_dict()
df.to_json()
df.to_html()
df.to_clipboard()
MarkDown形式出力
文字列形式出力
辞書形式出力
json形式出力
html形式出力
クリップボード形式出力
import pandas as pd

dict = {
'日付': {0: '2024-01-04', 1: '2024-02-06', 2: '2024-03-10', 3: '2024-05-06', 4: '2024-05-04', 5: '2024-07-10', 6: '2024-10-13', 7: '2024-01-06', 8: '2024-02-07', 9: '2024-03-10', 10: '2024-06-10', 11: '2024-10-06', 12: '2024-07-04', 13: '2024-08-09', 14: '2024-10-10', 15: '2024-05-06', 16: '2024-07-03', 17: '2024-04-12'},
'購入店': {0: 'A', 1: 'A', 2: 'A', 3: 'B', 4: 'B', 5: 'B', 6: 'B', 7: 'C', 8: 'C', 9: 'D', 10: 'D', 11: 'D', 12: 'C', 13: 'C', 14: 'C', 15: 'A', 16: 'B', 17: 'B'},
'種類': {0: '家電', 1: '家電', 2: '家電', 3: '家電', 4: '家電', 5: '家電', 6: '家電', 7: '家具', 8: '家具', 9: '家具', 10: '家具', 11: '家具', 12: '文具', 13: '文具', 14: '文具', 15: '文具', 16: '文具', 17: '文具'},
'名称': {0: '電球', 1: '電子レンジ', 2: 'テレビ', 3: '洗濯機', 4: 'エアコン', 5: '照明器具', 6: '電池', 7: '椅子', 8: '', 9: 'タンス', 10: '布団', 11: '', 12: 'シャープペンシル', 13: 'ボールペン', 14: '消しゴム', 15: 'ノート', 16: 'ノート', 17: 'ボー ルペン'},
'数量': {0: 4, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 5, 7: 4, 8: 1, 9: 1, 10: 2, 11: 2, 12: 3, 13: 3, 14: 5, 15: 10, 16: 10, 17: 1},
'単価': {0: 1000, 1: 50000, 2: 150000, 3: 200000, 4: 180000, 5: 10000, 6: 300, 7: 10000, 8: 50000, 9: 70000, 10: 30000, 11: 5000, 12: 600, 13: 300, 14: 100, 15: 100, 16: 100, 17: 300},
'価格': {0: 4000, 1: 50000, 2: 150000, 3: 200000, 4: 180000, 5: 10000, 6: 1500, 7: 40000, 8: 50000, 9: 70000, 10: 60000, 11: 10000, 12: 1800, 13: 900, 14: 500, 15: 1000, 16: 1000, 17: 300}
}
df = pd.DataFrame(dict)

# 1.行列の数---------------------------
print(df.shape)
# (18, 7)

# 2.行名-------------------------------
print(df.index)
# Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], dtype='int64')

# 3.列名-------------------------------
print(df.columns)
# Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], dtype='int64')

# 4.列の種類---------------------------
print(df.dtypes)
# 日付     object
# 購入店    object
# 種類     object
# 名称     object
# 数量      int64
# 単価      int64
# 価格      int64

# 5.特定の列のパラメータ種類-----------
print(df['種類'].unique())
# ['家電' '家具' '文具']

# 6.特定の列のパラメータの集計---------
print(df['種類'].value_counts())
# 家電    7
# 文具    6
# 家具    5


# 7.特定の列のパラメータの集計---------
print(df[['種類','名称']])
#    種類     名称
# 0  家電     電球
# 1  家電  電子レンジ
# 2  家電    テレビ
# 3  家電    洗濯機
# 4  家電   エアコン
# ...

# 8.先頭から指定した行数--------------
print(df.head(3))
#            日付 購入店  種類     名称  数量      単価      価格
# 0  2024-01-04   A  家電     電球   4    1000    4000
# 1  2024-02-06   A  家電  電子レンジ   1   50000   50000
# 2  2024-03-10   A  家電    テレビ   1  150000  150000


# 9.終端から指定した行数--------------
print(df.tail(3))
#             日付 購入店  種類      名称  数量   単価    価格
# 15  2024-05-06   A  文具     ノート  10  100  1000
# 16  2024-07-03   B  文具     ノート  10  100  1000
# 17  2024-04-12   B  文具  ボー ルペン   1  300   300


# 10.行と列の幅を絞る-------------------
print(df.iloc[:10,3:])
#       名称  数量      単価      価格
# 0     電球   4    1000    4000
# 1  電子レンジ   1   50000   50000
# 2    テレビ   1  150000  150000
# 3    洗濯機   1  200000  200000
# 4   エアコン   1  180000  180000
# 5   照明器具   1   10000   10000
# 6     電池   5     300    1500
# 7     椅子   4   10000   40000
# 8      机   1   50000   50000
# 9    タンス   1   70000   70000

# 11.行列入れ替え-----------------------
print(df.T)
#              0           1           2           3   ...          14          15          16          17
# 日付   2024-01-04  2024-02-06  2024-03-10  2024-05-06  ...  2024-10-10  2024-05-06  2024-07-03  2024-04-12
# 購入店           A           A           A           B  ...           C           A           B           B
# 種類           家電          家電          家電          家電  ...          文具          文具          文具          文具
# 名称           電球       電子レンジ         テレビ         洗濯機  ...        消しゴム         ノート         ノート      ボー ルペン
# 数量            4           1           1           1  ...           5          10          10           1
# 単価         1000       50000      150000      200000  ...         100         100         100         300
# 価格         4000       50000      150000      200000  ...         500        1000        1000         300
# 
# [7 rows x 18 columns]

# 12.降順、Index変更--------------------
print(df[['数量','単価','価格']].sum())
# 数量        56
# 単価    757800
# 価格    831000

# 13.昇順、Indexそのまま----------------
print(df.sort_values('単価', ascending=False,ignore_index=False).head(5))
#            日付 購入店  種類    名称  数量      単価      価格
# 3  2024-05-06   B  家電   洗濯機   1  200000  200000
# 4  2024-05-04   B  家電  エアコン   1  180000  180000
# 2  2024-03-10   A  家電   テレビ   1  150000  150000
# 9  2024-03-10   D  家具   タンス   1   70000   70000
# 8  2024-02-07   C  家具     机   1   50000   50000

# 13.降順、Index変更--------------------
print(df.sort_values('単価', ascending=True, ignore_index=True).head(5))
#            日付 購入店  種類      名称  数量   単価    価格
# 0  2024-05-06   A  文具     ノート  10  100  1000
# 1  2024-10-10   C  文具    消しゴム   5  100   500
# 2  2024-07-03   B  文具     ノート  10  100  1000
# 3  2024-04-12   B  文具  ボー ルペン   1  300   300
# 4  2024-08-09   C  文具   ボールペン   3  300   900

# 14.フィルタ:文字列指定
print( df[df['購入店'].isin(['A','C'])] )
#             日付 購入店  種類        名称  数量      単価      価格
# 0   2024-01-04   A  家電        電球   4    1000    4000
# 1   2024-02-06   A  家電     電子レンジ   1   50000   50000
# 2   2024-03-10   A  家電       テレビ   1  150000  150000
# 7   2024-01-06   C  家具        椅子   4   10000   40000
# 8   2024-02-07   C  家具         机   1   50000   50000
# 12  2024-07-04   C  文具  シャープペンシル   3     600    1800
# 13  2024-08-09   C  文具     ボールペン   3     300     900
# 14  2024-10-10   C  文具      消しゴム   5     100     500
# 15  2024-05-06   A  文具       ノート  10     100    1000

# 15.フィルタ:含む文字列
print( df[df['日付'].str.contains('2024-05')] )
#             日付 購入店  種類    名称  数量      単価      価格
# 3   2024-05-06   B  家電   洗濯機   1  200000  200000
# 4   2024-05-04   B  家電  エアコン   1  180000  180000
# 15  2024-05-06   A  文具   ノート  10     100    1000

# 16.フィルタ:終端文字列比較
print( df[df['種類'].str.endswith('')] )
#            日付 購入店  種類     名称  数量      単価      価格
# 0  2024-01-04   A  家電     電球   4    1000    4000
# 1  2024-02-06   A  家電  電子レンジ   1   50000   50000
# 2  2024-03-10   A  家電    テレビ   1  150000  150000
# 3  2024-05-06   B  家電    洗濯機   1  200000  200000
# 4  2024-05-04   B  家電   エアコン   1  180000  180000
# 5  2024-07-10   B  家電   照明器具   1   10000   10000
# 6  2024-10-13   B  家電     電池   5     300    1500

# 17.フィルタ:開始文字列比較
print( df[df['種類'].str.startswith('')] )
#             日付 購入店  種類     名称  数量      単価      価格
# 0   2024-01-04   A  家電     電球   4    1000    4000
# 1   2024-02-06   A  家電  電子レンジ   1   50000   50000
# 2   2024-03-10   A  家電    テレビ   1  150000  150000
# 3   2024-05-06   B  家電    洗濯機   1  200000  200000
# 4   2024-05-04   B  家電   エアコン   1  180000  180000
# 5   2024-07-10   B  家電   照明器具   1   10000   10000
# 6   2024-10-13   B  家電     電池   5     300    1500
# 7   2024-01-06   C  家具     椅子   4   10000   40000
# 8   2024-02-07   C  家具      机   1   50000   50000
# 9   2024-03-10   D  家具    タンス   1   70000   70000
# 10  2024-06-10   D  家具     布団   2   30000   60000
# 11  2024-10-06   D  家具      枕   2    5000   10000


# 18.フィルタ:正規表現文字列比較
print( df[df['名称'].str.match('^.{3}$')] )
#             日付 購入店  種類   名称  数量      単価      価格
# 2   2024-03-10   A  家電  テレビ   1  150000  150000
# 3   2024-05-06   B  家電  洗濯機   1  200000  200000
# 9   2024-03-10   D  家具  タンス   1   70000   70000
# 15  2024-05-06   A  文具  ノート  10     100    1000
# 16  2024-07-03   B  文具  ノート  10     100    1000

# 19.フィルタ:query()
print(df.query('価格>10000 and 購入店=="A"'))
#            日付 購入店  種類     名称  数量      単価      価格
# 1  2024-02-06   A  家電  電子レンジ   1   50000   50000
# 2  2024-03-10   A  家電    テレビ   1  150000  150000


# 20.指定列の最大値の行-----------------
print(df.iloc[df['価格'].idxmax()])
# 日付     2024-05-06
# 購入店             B
# 種類             家電
# 名称            洗濯機
# 数量              1
# 単価         200000
# 価格         200000

# 21.指定列の最大値の行-----------------
print(df.iloc[df['価格'].idxmin()])
# 日付     2024-04-12
# 購入店             B
# 種類             文具
# 名称         ボー ルペン
# 数量              1
# 単価            300
# 価格            300

#22.Nanを'0'で埋める-------------------
df.fillna(0)
#例はNonがないので変化なし

# 23.出力------------------------------
df.to_html('out.json')
df.to_html('out.html')
df.to_string('out.txt')
df.to_clipboard()
23
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?