この記事から得られること
- データ分析で利用するための、データ操作が簡単にできることがわかる。
- 慣れれば、おそらく、エクセルより操作が簡単だと感じるかもしれません。
- データ操作するための時間短縮になるかもしれません。
なぜこの内容を紹介するのか
理由は、なれるとエクセルより作業が楽になるのではと思って便利になるのではと思っています。
データの読み込みと確認
1. pd.read_csv()
CSVファイルを読み込み、DataFrameを作成します。
import pandas as pd
df = pd.read_csv('data.csv')
read_*** の ***の部分を変更すると、excel,sql,clipbordなど読み込みできるデータを変更できます。
他のデータの読み込みは、こちらを参照してください。
今回ファイルの中身は、こちらを想定して説明します。
株価の数字を適当に入れています。
1箇所pd.NAと入れていますが、NAの処理のため意図的に入れています。
df = pd.DataFrame({'GOOG':[158.56,157.21,167.31,168.42,167.19,165.29,168.83],
'AMZN':[186.61,181.96,184.76,185.13,186.33,187.97,pd.NA]
})
2. df.columns
カラム名が取得できます。
print(df.columns)
Index(['GOOG', 'AMZN'], dtype='object')
3. df.head()
DataFrameの先頭数行を表示します。
() 内に数字がない場合は、先頭行から5行表示します。
数字を入力すると、指定した数字の数だけ先頭行から表示されます。
print(df.head())
実行結果
GOOG | AMZN | |
---|---|---|
0 | 158.56 | 186.61 |
1 | 157.21 | 181.96 |
2 | 167.31 | 184.76 |
3 | 168.42 | 185.13 |
4 | 167.19 | 186.33 |
先頭から5行分取得されています。
4. df.tail()
DataFrameの末尾数行を表示します。
() 内に数字がない場合は、末尾行下5行表示します。
数字を入力すると、指定した数字の数だけ末尾行下の行が表示されます。
print(df.tail())
実行結果
GOOG | AMZN | |
---|---|---|
2 | 167.31 | 184.76 |
3 | 168.42 | 185.13 |
4 | 167.19 | 186.33 |
5 | 165.29 | 187.97 |
6 | 168.83 |
末尾5行分が取得されています。pd.NAの部分は空白(データなし)です。
CSVやエクセルなどのファイルを読み込みし、データなしのセルは
同様に空白が表示されます。
実際のデータのファイルを読込するときは、どこに空白があるか、
目視では難しいので、空白の有無を確認後、どのように処理をするか決めます。
5. df.shape
DataFrameの行数と列数をタプルで返します。
print(df.shape)
(7, 2)
カラム名を除く、7行分と、2列分のデータが入っていることが確認できます。
6. df.dtypes
各列のデータ型を表示します。
print(df.dtypes)
0
GOOG float64
AMZN object
dtype: object
GOOGのデータには、小数点を含む値が入っていることがわかります。
AMZNのデータには、ovject型のデータが入っていることがわかります。
どうやら、一つでも、種類の異なるデータが入っていると、その値に影響するようです。
7. df.info()
DataFrameの概要情報を表示します。
print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7 entries, 0 to 6
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 GOOG 7 non-null float64
1 AMZN 6 non-null object
dtypes: float64(1), object(1)
memory usage: 240.0+ bytes
ここからでも0番目から6番目の7行分データが入っていることがわかります。
nullの値が入っていない数も
GOOG 7 non-null
AMZN 6 non-null
からわかります。
AMZNは1個だけnull(値が入っていない)いうことがわかります。
8. df.describe()
数値型の列の統計量(平均値、標準偏差、最小値、最大値など)を表示します。
print(df.describe())
実行結果
GOOG | |
---|---|
count | 7.000000 |
mean | 164.687143 |
std | 4.796772 |
min | 157.210000 |
25% | 161.925000 |
50% | 167.190000 |
75% | 167.865000 |
max | 168.830000 |
ここで、AMZNの計算はされません。
どうやら、1箇所でも数字以外が入力されていると計算されないようです。
また、列に数字以外の値が入力されている場合、例えば、性別、県名などが入力されている場合も計算されません。
他データを確認する方法はpandasのページにありますので、
必要な方は見てみてください。