pandasの基本的な使い方たちを忘れないようにメモしてみる part4

データのフィルタ、検索について

まずデータを読み込む

実際はファイルを読み込んでいるけれどここでは文字列から読み込んでいる
ファイルから読み込む場合はpd.read_csv(filepath, 他の引数)でいける

$ python
Python 3.8.11 (default, Jul  3 2021, 08:42:01)
[Clang 12.0.5 (clang-1205.0.22.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import io
>>> import pandas as pd
>>>
>>> csv = '''date,id,data,count,xyz
... 2021-04-01, 1, data1, 1, 2
... 2021-04-02, 2, data2, 2, 3
... 2021-04-03, 3, data3, 3, 4
... 2021-04-04, 4, data4, 4, 5
... 2021-04-05, 5, data5, 5, 6
... 2021-04-06, 6, data6, 6, 7
... 2021-04-07, 7, data7, 7, 8
... 2021-04-08, 8, data8, 8, 9
... 2021-04-09, 9, data9, 9, 10
... 2021-04-10, 10, data10, 10, 11
...
... '''
>>>
>>> data = pd.read_csv(io.StringIO(csv), parse_dates = ['date', ], low_memory=False)
>>> data
        date  id     data  count  xyz
0 2021-04-01   1    data1      1    2
1 2021-04-02   2    data2      2    3
2 2021-04-03   3    data3      3    4
3 2021-04-04   4    data4      4    5
4 2021-04-05   5    data5      5    6
5 2021-04-06   6    data6      6    7
6 2021-04-07   7    data7      7    8
7 2021-04-08   8    data8      8    9
8 2021-04-09   9    data9      9   10
9 2021-04-10  10   data10     10   11

列の並び順を変えたい

DataFrame.reindex()を使うと並び順を変えられる

>>> # 列を並び替える(data列を末尾に移す)
>>> data.reindex(columns=['date', "id", 'count', 'xyz', 'count_xyz', 'data'])
        date  id  count  xyz  count_xyz     data
0 2021-04-01   1      3    2          5    data1
1 2021-04-02   2      6    3          9    data2
2 2021-04-03   3      9    4         13    data3
3 2021-04-04   4     12    5         17    data4
4 2021-04-05   5     15    6         21    data5
5 2021-04-06   6     18    7         25    data6
6 2021-04-07   7     21    8         29    data7
7 2021-04-08   8     24    9         33    data8
8 2021-04-09   9     27   10         37    data9
9 2021-04-10  10     30   11         41   data10

reindex()で列を削除することもできる

reindex()のcolumns引数から要らない列名を取り除くとその列は削除される

>>> # reindexで列を取り除くこともできる(data列を取り除く)
>>> data.reindex(columns=['date', "id", 'count', 'xyz', 'count_xyz'])
        date  id  count  xyz  count_xyz
0 2021-04-01   1      3    2          5
1 2021-04-02   2      6    3          9
2 2021-04-03   3      9    4         13
3 2021-04-04   4     12    5         17
4 2021-04-05   5     15    6         21
5 2021-04-06   6     18    7         25
6 2021-04-07   7     21    8         29
7 2021-04-08   8     24    9         33
8 2021-04-09   9     27   10         37
9 2021-04-10  10     30   11         41

行と列を入れ替えたい

DataFrame.Tで行と列を入れ替えたDataframeが得られる

小さいcsvでデータを作ってみる

>>> import io
>>> import pandas as pd
>>>
>>> csv = '''date,id,data,count,xyz
... 2021-04-01, 1, data1, 1, 2
... 2021-04-02, 2, data2, 2, 3
... 2021-04-03, 3, data3, 3, 4
... '''
>>>
>>> data = pd.read_csv(io.StringIO(csv), parse_dates = ['date', ], low_memory=False)
>>> data
        date  id    data  count  xyz
0 2021-04-01   1   data1      1    2
1 2021-04-02   2   data2      2    3
2 2021-04-03   3   data3      3    4
>>> data.T
                         0                    1                    2
date   2021-04-01 00:00:00  2021-04-02 00:00:00  2021-04-03 00:00:00
id                       1                    2                    3
data                 data1                data2                data3
count                    1                    2                    3
xyz                      2                    3                    4