筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

pandas入門2_「dataframeについて」

pandas入門2_「dataframeについて」

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第2回目、「dataframeについて」です。

dataframeとは

Dataframeには二次元のデータを収納することができ、行や列にそれぞれ名前が付けることもできます。

今回学ぶこと

今回では、以下の関数を使えるようになることが目標です。

pd.read_clipboard( )(クリップボードを読みこむ)
dataframe.columns(列(カラム)の名前を表示する)
dataframe['columns'](列(カラム)を引数にして、要素を表示する)
DataFrame(dataframe,columns=['index1','index2',])(任意のカラム名で新しいDataFrameを作る)
dataframe.head(n)(先頭からn行だけを表示)
dataframe.tail(n)(最後からn行だけを表示)
dataframe.loc[n](行を引数にして、要素を表示する)
dataframe['columns']="columns_name" (列(カラム)全体に値を代入)
del dataframe['columns'](列(columns)を消す)
 dataframe.drop('columns_name',axis=1)(列(columns)を消す)

おまじない

import numpy as np
from pandas import Series, DataFrame
import pandas as pd

dataframeをつくる

#一般的にはこのように作成します
#df = DataFrame(要素,columns=['カラム名'],index=['インデックス名'])

#今回はNFLのデータからdataframeを作ります
#NFLのデータ(http://en.wikipedia.org/wiki/NFL_win-loss_records)の上位Rank5を参考にdataframeをつくる

nfl_frame = pd.read_clipboard()#クリップボードから読み込むことが可能です。
nfl_frame


>>>
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division
0 1 Dallas Cowboys 502 374 6 0.573 1960 882 NFC East
1 2 Green Bay Packers 737 562 37 0.565 1921 1,336 NFC North
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North
3 4 Miami Dolphins 445 351 4 0.559 1966 800 AFC East
4 5 New England Patriots[b] 489 386 9 0.558 1960 884 AFC East

dataframe.columns(列(カラム)の名前を表示する)

nfl_frame.columns

>>>
Index(['Rank', 'Team', 'Won', 'Lost', 'Tied', 'Pct.', 'First NFL Season',
       'Total Games', 'Division'],
      dtype='object')

dataframe['columns'](列(カラム)を引数にして、要素を表示する)

nfl_frame['First NFL Season']

>>>
0    1960
1    1921
2    1920
3    1966
4    1960
Name: First NFL Season, dtype: int64
#この書き方でも同様の操作ができる
nfl_frame.Team

>>>
0             Dallas Cowboys
1          Green Bay Packers
2              Chicago Bears
3             Miami Dolphins
4    New England Patriots[b]
Name: Team, dtype: object

DataFrame(dataframe,columns=['index1','index2',])(任意のカラム名で新しいDataFrameを作る)

DataFrame(nfl_frame,columns=['Team','First NFL Season','Total Games'])

>>>
Team First NFL Season Total Games
0 Dallas Cowboys 1960 882
1 Green Bay Packers 1921 1,336
2 Chicago Bears 1920 1,370
3 Miami Dolphins 1966 800
4 New England Patriots[b] 1960 884

dataframe.head(n)(先頭からn行だけを表示)

nfl_frame.head(3)
#ちなみに、引数を与えないと5行になります

 >>>
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division
0 1 Dallas Cowboys 502 374 6 0.573 1960 882 NFC East
1 2 Green Bay Packers 737 562 37 0.565 1921 1,336 NFC North
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North

dataframe.tail(n)(最後からn行だけを表示)

nfl_frame.tail(3)

>>>
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North
3 4 Miami Dolphins 445 351 4 0.559 1966 800 AFC East
4 5 New England Patriots[b] 489 386 9 0.558 1960 884 AFC East

dataframe.loc[n](行を引数にして、要素を表示する)

nfl_frame.loc[3]

>>>
Rank                             4
Team                Miami Dolphins
Won                            445
Lost                           351
Tied                             4
Pct.                         0.559
First NFL Season              1966
Total Games                    800
Division                  AFC East
Name: 3, dtype: object

dataframe['columns']="columns_name" (列(カラム)全体に値を代入)

nfl_frame['Stadium']="Levi's Stadium" #'Stadium'という列に、"Levi's Stadium"を代入しています
nfl_frame

>>>
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division Stadium
0 1 Dallas Cowboys 502 374 6 0.573 1960 882 NFC East Levi's Stadium
1 2 Green Bay Packers 737 562 37 0.565 1921 1,336 NFC North Levi's Stadium
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North Levi's Stadium
3 4 Miami Dolphins 445 351 4 0.559 1966 800 AFC East Levi's Stadium
4 5 New England Patriots[b] 489 386 9 0.558 1960 884 AFC East Levi's Stadium

SeriesをDataFrameに追加する

#まずは、Seriesをつくる
stadiums = Series(["Levi's Stadium","AT&T Stadium"],index=[4,0])
stadiums

>>>
4    Levi's Stadium
0    AT&T Stadium
dtype: object
Dataframeに追加する
nfl_frame['Stadium']=stadiums
nfl_frame

>>>
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division Stadium
0 1 Dallas Cowboys 502 374 6 0.573 1960 882 NFC East AT&T Stadium
1 2 Green Bay Packers 737 562 37 0.565 1921 1,336 NFC North NaN
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North NaN
3 4 Miami Dolphins 445 351 4 0.559 1966 800 AFC East NaN
4 5 New England Patriots[b] 489 386 9 0.558 1960 884 AFC East Levi's Stadium

del dataframe['columns'](列(columns)を消す)

del nfl_frame['Stadium']
nfl_frame

>>>
#Stadium列がなくなったことがわかります
Rank Team Won Lost Tied Pct. First NFL Season Total Games Division
0 1 Dallas Cowboys 502 374 6 0.573 1960 882 NFC East
1 2 Green Bay Packers 737 562 37 0.565 1921 1,336 NFC North
2 3 Chicago Bears 749 579 42 0.562 1920 1,370 NFC North
3 4 Miami Dolphins 445 351 4 0.559 1966 800 AFC East
4 5 New England Patriots[b] 489 386 9 0.558 1960 884 AFC East

dataframe.drop('columns_name',axis=1)(列(columns)を消す)

#また、nfl_frame.drop('Stadium',axis=1)でも同じ操作ができます
#axis=1は列(columns)を表します

#行の場合は、nfl_frame.drop(n)でも消すことができます
#nはindex番号

標準python、numpy、pandasのあれこれ

さて、pythonにはlist、array、series、detaframeなど様々な配列があり、実際のデータ解析では、それらを行ったり来たりしたいことが多々あると思います。

そんな時に、以下のページが参考になりますので、記載しておきます。 https://qiita.com/richi40/items/6b3af6f4b00d62dbe8e1

また、DataFrameの機能の全体は、以下のリンクからWebで確認できます。 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html

少し長くなってしまいましたが、今回は以上です。

お疲れ様でした!

次回は、こちら。

watarumon.hatenablog.com

それじゃー、また。