LoginSignup
1
2

More than 1 year has passed since last update.

いつも忘れるpandasの個人的に便利だねって思う機能(挙動)のメモ

Last updated at Posted at 2022-02-09

概要

いつも忘れるんだけど、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')
1
2
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
1
2