あんまり使えてなかったけど気づけば1.0.1になっていた。
(base) C:Usersken26>pip list -o | grep pandas pandas 0.24.2 1.0.1 wheel pandas-datareader 0.7.4 0.8.1 wheel pandas-profiling 2.3.0 2.5.0 sdist
早速アップします
pip install -U pandas
参照元
特徴
- ユーザー側からすればあまり変更点は無い
- しかしパフォーマンスがよくなっている
- APIが強化、クリーンアップ、廃止された
最も重要な6つの改善点
1. 文字列とブーリアン
- まだ実験的機能
- 改善が見込まれる
- 現状ではまだ文字列はブールを自動的に割り当ててはくれない様子
という事で、テスト用csvを用意して動作確認してみます
>>> import pandas as pd >>> pd.__version__ '1.0.1' >>> >>> df = pd.read_csv('test.csv') >>> df id name date num num2 flag 0 1 ken 2004/12/7 200 1.2 True 1 2 taro 2001/8/2 300 0.5 False 2 3 hana 2002/3/3 400 5.2 True >>> >>> df.dtypes id int64 name object date object num int64 num2 float64 flag bool dtype: object
今でも日付と文字列は object として扱っている。
>>> df['name'] = df['name'].astype('string') >>> >>> df.dtypes id int64 name string date object num int64 num2 float64 flag bool dtype: object
しかし string を使えばこの2つは区別できる。
前は string ってなかったのか。これは良い事
2. select_dtypes
型を指定して列をフィルターする事ができる
>>> df.select_dtypes('string') name 0 ken 1 taro 2 hana
これは便利。
3. pandas.NA
- pandas.NA というものができたらしい
- これも実験的機能
>>> df2 = pd.Series([1, 2, None], dtype="Int64") >>> df2 0 1 1 2 2 <NA> dtype: Int64 >>> df2[2] is pd.NA True
4. .convert_dtypes()
- 列の型を変更するメソッド
>>> df = pd.read_csv('test.csv') >>> df.dtypes id int64 name object date object num int64 num2 float64 flag bool dtype: object >>> df.convert_dtypes().dtypes id Int64 name string date string num Int64 num2 float64 flag boolean dtype: object
おぉ凄い。と思ったけど日付が文字列で bool は boolean になっている。
紛らわしい。でも便利。
5. .info()
- info メソッドが改善されたとのこと
0.24.2
>>> df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 6 columns): id 3 non-null int64 name 3 non-null object date 3 non-null object num 3 non-null int64 num2 3 non-null float64 flag 3 non-null bool dtypes: bool(1), float64(1), int64(2), object(2) memory usage: 203.0+ bytes
1.0.1
>>> df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 3 non-null int64 1 name 3 non-null object 2 date 3 non-null object 3 num 3 non-null int64 4 num2 3 non-null float64 5 flag 3 non-null bool dtypes: bool(1), float64(1), int64(2), object(2) memory usage: 251.0+ bytes
データが大きくなく複雑でもないから、タイトル行が増えたくらいしかわからないな。
6. .to_markdown()
- tabulate に依存しているため、
pip install tabulate
が必要
>>> df.to_markdown() '| | id | name | date | num | num2 | flag |n|---:|-----:|:-------|:----------|------:|-------:|:-------|n| 0 | 1 | ken | 2004/12/7 | 200 | 1.2 | True |n| 1 | 2 | taro | 2001/8/2 | 300 | 0.5 | False |n| 2 | 3 | hana | 2002/3/3 | 400 | 5.2 | True |'
id | name | date | num | num2 | flag | |
---|---|---|---|---|---|---|
0 | 1 | ken | 2004/12/7 | 200 | 1.2 | True |
1 | 2 | taro | 2001/8/2 | 300 | 0.5 | False |
2 | 3 | hana | 2002/3/3 | 400 | 5.2 | True |
はてなブログは n
が改行とは認識されなかったのですべて手動で改行する必要があった。