Drkcore

27 12 2013 Python pandas Tweet

逆引きPandas (DataFrame編)

R逆引きハンドブックのMatrixの章をPandasで。

ProductName R言語逆引きハンドブック
石田基広
シーアンドアール研究所 / 4830円 ( 2012-01-26 )


作者の書いた本はオススメ

ProductName Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
Wes McKinney
オライリージャパン / 3780円 ( 2013-12-26 )


データフレームを作成する

>>> pd.DataFrame([[1,2,3],[4,5,6]])
   0  1  2
0  1  2  3
1  4  5  6

データフレームに列名と行名を追加

>>> x = pd.DataFrame([[1,2,3],[4,5,6]])
>>> pd.DataFrame([[1,2,3],[4,5,6]])
   0  1  2
0  1  2  3
1  4  5  6
>>> x = pd.DataFrame([[1,2,3],[4,5,6]])
>>> x
   0  1  2
0  1  2  3
1  4  5  6
>>> x.index = list("ab")
>>> x.columns = list("cde")
>>> x
   c  d  e
a  1  2  3
b  4  5  6

データフレームの列にアクセスする

>>> x = pd.DataFrame([[1,2,3],[4,5,6]], index=list("ab"), columns=list("cde"))
>>> x
   c  d  e
a  1  2  3
b  4  5  6
>>> x["c"]
a    1
b    4
Name: c, dtype: int64
>>> x.c
a    1
b    4
Name: c, dtype: int64

Seriesが返ってくるのでメソッドもよべる

>>> x.c.mean()
2.5
>>> x.c.sum()
5

データフレームに要素を追加する

>>> x = pd.DataFrame([[1,2,3],[4,5,6]], index=list("ab"), columns=list("cde"))
>>> y = pd.Series([7,8,9], index=list("cde"))
>>> x.append(y, ignore_index=True)
   c  d  e
0  1  2  3
1  4  5  6
2  7  8  9

データフレームを結合する

rbind

::: python
>>> x
   0  1
0  1  0
1 -2  3
>>> x.append(x)
   0  1
0  1  0
1 -2  3
0  1  0
1 -2  3
>>> pd.concat([x, x], axis=0)
   0  1
0  1  0
1 -2  3
0  1  0
1 -2  3

cbind

::: python
>>> pd.concat([x, x], axis=1)
   0  1  0  1
0  1  0  1  0
1 -2  3 -2  3

データフレームから一部を抽出する

ggplotの組込みデータを使う。 wt>3のname,disp列を抽出

>>> from ggplot import mtcars
>>> mtcars[mtcars.wt > 3][["name","disp"]]
                   name   disp
3        Hornet 4 Drive  258.0
4     Hornet Sportabout  360.0
5               Valiant  225.0
6            Duster 360  360.0
7             Merc 240D  146.7
8              Merc 230  140.8
9              Merc 280  167.6
10            Merc 280C  167.6
11           Merc 450SE  275.8
12           Merc 450SL  275.8
13          Merc 450SLC  275.8
14   Cadillac Fleetwood  472.0
15  Lincoln Continental  460.0
16    Chrysler Imperial  440.0
21     Dodge Challenger  318.0
22          AMC Javelin  304.0
23           Camaro Z28  350.0
24     Pontiac Firebird  400.0
28       Ford Pantera L  351.0
30        Maserati Bora  301.0

データフレームの列を変換する

transform

>>> x = pd.DataFrame([(1,2),(3,4),(5,6),(7,8)])
>>> x
   0  1
0  1  2
1  3  4
2  5  6
3  7  8
>>> x[2] = x[0]+2
>>> x
   0  1  2
0  1  2  3
1  3  4  5
2  5  6  7
3  7  8  9

因子ごとに組み合わせを作成する

R expand.grid() function in Python

データフレームの列や行ごとの合計を求める

::: python
>>> x
   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9
>>> x.sum(axis=0)
0    12
1    15
2    18
dtype: int64
>>> x.sum(axis=1)
0     6
1    15
2    24
dtype: int64

データフレームの列ごとに関数を適用する

>>> x = pd.DataFrame([(1,2),(3,4),(5,6),(7,8)])
>>> x.apply(sum)
0    16
1    20
dtype: int64

データフレームから欠損値を取り除く

>>> x = pd.DataFrame([(1,2),(3,np.nan),(np.nan,6),(7,8)])
>>> x
    0   1
0   1   2
1   3 NaN
2 NaN   6
3   7   8
>>> x.dropna()
   0  1
0  1  2
3  7  8

データフレームの列を分解、統合する

multiindex便利

>>> x = pd.DataFrame([(1,"Y"),(3,"N"),(6,"N"),(7,"Y")])
>>> x
   0  1
0  1  Y
1  3  N
2  6  N
3  7  Y
>>> y = x.groupby(1)
>>> y.head()
     0  1
1        
N 1  3  N
  2  6  N
Y 0  1  Y
  3  7  Y
>>> y.mean()
     0
1     
N  4.5
Y  4.0

縦長形式のデータフレームを横長形式に変換する

>>> x = pd.DataFrame([(1,0,1),(1,1,2),(1,2,0),(2,0,1),(2,1,1),(2,2,3),(3,0,0),(3,1,1),(3,2,2)], columns=["subject","time","conc"])
>>> x
   subject  time  conc
0        1     0     1
1        1     1     2
2        1     2     0
3        2     0     1
4        2     1     1
5        2     2     3
6        3     0     0
7        3     1     1
8        3     2     2
>>> x.pivot(index="time", columns="subject")
         conc      
subject     1  2  3
time               
0           1  1  0
1           2  1  1
2           0  3  2

データフレームを分割する

groupby

データフレームを並べ替える

>>> x = pd.DataFrame([(1,0,1),(1,1,2),(1,2,0),(2,0,1),(2,1,1),(2,2,3),(3,0,0),(3,1,1),(3,2,2)], columns=["subject","time","conc"])
>>> x
   subject  time  conc
0        1     0     1
1        1     1     2
2        1     2     0
3        2     0     1
4        2     1     1
5        2     2     3
6        3     0     0
7        3     1     1
8        3     2     2
>>> x.sort("time")
   subject  time  conc
0        1     0     1
3        2     0     1
6        3     0     0
1        1     1     2
4        2     1     1
7        3     1     1
2        1     2     0
5        2     2     3
8        3     2     2

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021