今回はpandasのoperator操作を紹介したいと思います。
まず簡単なDateFrameを作ります。
import numpy as np
import pandas as pd
df=pd.DataFrame({ 'col1':[1,2,3,4], 'col2':[444,555,666,444], 'col3':['abc','def','ghi','xyz'] }) df.head()
こんな感じのDataFrame作りました。
col1 | col2 | col3 | |
---|---|---|---|
0 | 1 | 444 | abc |
1 | 2 | 555 | def |
2 | 3 | 666 | ghi |
3 | 4 | 444 | xyz |
ユニークなKeyを探しします。
df['col2'].unique()
numpyの配列が戻ってきました。
array([444, 555, 666])
ユニークなKeyの数を求めます。
len(df['col2'].unique()) df['col2'].nunique()
どっちでもいけます。
3
各IDの数を求めます。
df['col2'].value_counts()
Seriesが戻りました。
444 2 555 1 666 1 Name: col2, dtype: int64
DataFrameの中に2より大きなRowsを探がします。
df[df[‘col1’]>2]
これは実際jupyterで出力されたTableです。
col1 | col2 | col3 | |
---|---|---|---|
2 | 3 | 666 | ghi |
3 | 4 | 444 | xyz |
DataFrameの中に”col1″が2より大きなところを探します。
df[‘col1’]>2
Seriesが戻ってきました。Trueは2より大きく、Falseは2より以下。
0 False 1 False 2 True 3 True Name: col1, dtype: bool
DataFrameの中に”&”Operatorを使ってみます。”col1″が2より大きく”col2″が444より大きなところを探します。
df[(df['col1']>2) & (df['col2']>444)]
これは実際jupyterで出力されたTableです。
col1 | col2 | col3 | |
---|---|---|---|
2 | 3 | 666 | ghi |
DataFrameの和を計算します。
df.sum()
Seriesが戻ってきます。
col1 10 col2 2109 col3 abcdefghixyz dtype: object
もちろん、Function()をはめることもできます。
def time3(x): return x*x*x df['col1'].apply(time3)
Seriesが戻ってきます。
df['col3'].apply(len)
Seriesが戻ってきます。
0 3 1 3 2 3 3 3 Name: col3, dtype: int64
df['col2'].apply(lambda x:x*3)
0 1332 1 1665 2 1998 3 1332 Name: col2, dtype: int64
DataFrameのcolumnsデータを取ります。
df.columns
Index(['col1', 'col2', 'col3'], dtype='object')
DataFrameのIndexを取ります。
df.index
RangeIndex(start=0, stop=4, step=1)
DataFrameの構成などを取ります。
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 4 entries, 0 to 3 Data columns (total 3 columns): col1 4 non-null int64 col2 4 non-null int64 col3 4 non-null object dtypes: int64(2), object(1) memory usage: 176.0+ bytes
DataFrameをソートします。
df.sort_values('col2')
‘col2’がBaseにしてソートされたDataFrame戻りました。
col1 | col2 | col3 | |
---|---|---|---|
0 | 1 | 444 | abc |
3 | 4 | 444 | xyz |
1 | 2 | 555 | def |
2 | 3 | 666 | ghi |
DataFrameの中にNan値があるかを探します。
df.isnull() df.notnull()
DataFrame戻りました。
col1 | col2 | col3 | |
---|---|---|---|
0 | False | False | False |
1 | False | False | False |
2 | False | False | False |
3 | False | False | False |
それじゃねー