概要
いつも忘れるんだけど、pandasにはそういう便利な機能(挙動)があったよねっていうのを書き留める記事
なぜこの記事を書いたか
いつも忘れるからメモしたりしているんだけど、googleDriveに入れておくより
qiitaに書いたほうが見返しやすそうって思ったので。
ちょっとづつ書き足していくと思う。たぶん。きっと。おそらく。
DataFrameにSeriesのデータを追加するときにindexに合わせてくれる
# DataFrameを作る
tmp_df = pd.DataFrame(
columns=["名前","所在地"],
data=np.array([
["名前0","所在地0"],["名前1","所在地1"],["名前2","所在地2"],["名前3","所在地3"],["名前4","所在地4"]
])
)
# 以下みたいなDataFrameができる。インデックスは0から始まっていて4まである。
名前 所在地
0 名前0 所在地0
1 名前1 所在地1
2 名前2 所在地2
3 名前3 所在地3
4 名前4 所在地4
---
# Seriesを作る
data_series = pd.Series(data=["d2","d3","d4","d5"], index=(2,3,4,5))
# 以下みたいなSeriesができる。インデックスは2から始まっていて5まである。
2 d2
3 d3
4 d4
5 d5
dtype: object
---
# DataFrameに新しいカラムを作ってSeriesのデータを追加する
tmp_df["data_series"] = data_series
tmp_df
# DataFrameのインデックスに合わせてデータを追加してくれる。
# Seriesのインデックスに0と1と5は無かったので1,2はNaNになり、5は追加されていない
名前 所在地 data_series
0 名前0 所在地0 NaN
1 名前1 所在地1 NaN
2 名前2 所在地2 2.0
3 名前3 所在地3 3.0
4 名前4 所在地4 4.0
真偽値はsumするとTrueの数を加法してくれる
pd.Series([True, False, True, True]).sum()
3
relativedelta(datetime1, datetime2) で datetime1 - datetime2 の計算ができる
>>> from dateutil.relativedelta import relativedelta
>>> delta = relativedelta(datetime(2020,1,1), datetime(2018,10,1))
>>> delta
# 1年3ヶ月の差があることが分かる
relativedelta(years=+1, months=+3)
# 年の部分だけ取れる
>>> delta.years
1
# 月の部分だけ取れる
>>> delta.months
3
# 差を月に変換できる
>>> delta.years*12 + delta.months
15
dtypesが任意のカラムだけ取得できる
# DataFrameを作る
>>> tmp_df = pd.DataFrame(
columns=["名前","所在地"],
data=np.array([
["名前0",0],["名前1",1],["名前2",2],["名前3",3],["名前4",4]
])
)
# 所在地のカラムをint64に変換する
>>> tmp_df["所在地"] = tmp_df["所在地"].astype("int")
# dtypesを表示
>>> tmp_df.dtypes
名前 object
所在地 int64
dtype: object
# 型がint64カラムだけ取得する
>>> tmp_df.columns[tmp_df.dtypes == "int64"]
Index(['所在地'], dtype='object')