pandas#Data Framesの1

DataFramesとは?

コード

まず下記のコードで簡単DataFrameを作って見ます。乱数で5x4のTableを作り、RowsのIndexはABCDEでColumnsはWXYZ。

import pandas as pd
import numpy as np
from numpy.rand import randn

np.random.seed(seed=101)

df=pd.DataFrame(randn(5,4),
['A','B','C','D','E'],
['W','X','Y','Z']
)
これは実際jupyterで出力されたTableです。ちょっとエクセルっぽいですね。
W X Y Z
A 0.221491 -0.855196 1.541990 0.666319
B -0.538235 -0.568581 1.407338 0.641806
C -0.905100 -0.391157 1.028293 -1.972605
D -0.866885 0.720788 -1.223082 1.606780
E -1.115710 -1.385379 -1.329660 0.041460

じゃ、ColumnsはどんなObject?

type(df['W'])
type(df)

pandas.core.series.Series
pandas.core.frame.DataFrame

下記はW Columnをとってみます。そのときはSeriesが戻ってきます。

df['W']

A    0.221491
B   -0.538235
C   -0.905100
D   -0.866885
E   -1.115710
Name: W, dtype: float64

こっちも同じW Columnsを取りますがおすすめません。そのやり方だといまMethodをCallするかColumnをCallしてるかが混乱になりますし、もとPandasに中にあるLibraryをOverwriteする可能性もあります。

df.W

A    0.221491
B   -0.538235
C   -0.905100
D   -0.866885
E   -1.115710
Name: W, dtype: float64

複数のColumnsも取れます。Listを入れればOKです。

df[['W','Y']]

これは実際jupyterで出力されたTableです。WとYだけの”DataFrame”が戻ってきます。

W Y
A 0.221491 1.541990
B -0.538235 1.407338
C -0.905100 1.028293
D -0.866885 -1.223082
E -1.115710 -1.329660

新しいColumnを追加するには?

df['new']=df['W']+df['Y']

これは実際jupyterで出力されたTableです。新しいColumn”new”が追加されました。Columnの値はColumnW+ColumnYです。

W X Y Z new
A 0.221491 -0.855196 1.541990 0.666319 1.763481
B -0.538235 -0.568581 1.407338 0.641806 0.869104
C -0.905100 -0.391157 1.028293 -1.972605 0.123193
D -0.866885 0.720788 -1.223082 1.606780 -2.089967
E -1.115710 -1.385379 -1.329660 0.041460 -2.445370

既存Columnを削除するには?削除する方法は、columnsを直接指定するのか、columnsのKeyとaxis=1を入れるのか。axis=0はIndexベースでaxis=1はcolumnsです。ちなみにDefaultは0です。あと注意するのはinplace=Trueです。DataFrameの中に大部のMethodsもこのinplaceのDefault値がFalseでそうするとColumnが一応削除したように見えますが実際はやってません。これは誤りの操作でDataが変更されてしまうことを予防です。

df.drop(columns='new',inplace=True)
df.drop('new',axis=1,inplace=True)

これは実際jupyterで出力されたTableです。先追加したColumn”new”が削除されました。

W X Y Z
A 0.221491 -0.855196 1.541990 0.666319
B -0.538235 -0.568581 1.407338 0.641806
C -0.905100 -0.391157 1.028293 -1.972605
D -0.866885 0.720788 -1.223082 1.606780
E -1.115710 -1.385379 -1.329660 0.041460

ですが…なんでColumnsのAxisは1でRowsのAxisは0ですか?
DataFrameはIndexでAWとか、WCとかなどのCellをMarkingするだけからです。

df.shape

(5, 4)

Rowを取ります。まずはKeyから。

df.loc['A']

W    0.221491
X   -0.855196
Y    1.541990
Z    0.666319
Name: A, dtype: float64

今度はIndexから取ります。

df.iloc[0]

W    0.221491
X   -0.855196
Y    1.541990
Z    0.666319
Name: A, dtype: float64

特定なCellを取ります。操作はエクセルと同じです。

#AW
df.loc['A','W']
#BZ
df.loc['B','Z']

0.22149068500354543
0.6418055114450044

それじゃねー

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする