Python-pandas-dataframe

提供:Dev Guides
移動先:案内検索

Pythonパンダ-DataFrame

データフレームは2次元のデータ構造です。つまり、データは表形式で行と列に配置されます。

DataFrameの機能

  • 潜在的に列は異なるタイプです
  • サイズ-可変
  • ラベル付き軸(行と列) *行と列に対して算術演算を実行できます

構造

学生のデータでデータフレームを作成していると仮定しましょう。

構造テーブル

SQLテーブルまたはスプレッドシートのデータ表現と考えることができます。

pandas.DataFrame

パンダのDataFrameは、次のコンストラクタを使用して作成することができます-

pandas.DataFrame( data, index, columns, dtype, copy)

コンストラクタのパラメータは次のとおりです-

Sr.No Parameter & Description
1
  • data*

データは、ndarray、series、map、lists、dict、constant、および別のDataFrameなどのさまざまな形式を取ります。

2

index

行ラベルの場合、インデックスが渡されない場合、結果のフレームに使用されるインデックスはオプションのデフォルトnp.arrange(n)です。

3

columns

列ラベルの場合、オプションのデフォルト構文は-np.arrange(n)です。 これは、インデックスが渡されない場合にのみ当てはまります。

4

dtype

各列のデータ型。

5

copy

デフォルトがFalseの場合、このコマンド(またはそれが何であれ)はデータのコピーに使用されます。

DataFrameを作成

パンダDataFrameはのような様々な入力を使用して作成することができます-

  • リスト
  • dict
  • シリーズ
  • Numpy ndarrays
  • 別のデータフレーム

この章の以降のセクションでは、これらの入力を使用してDataFrameを作成する方法について説明します。

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

作成できる基本的なDataFrameは空のDataframeです。

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df

その*出力*は次のとおりです-

Empty DataFrame
Columns: []
Index: []

リストからデータフレームを作成する

DataFrameは、単一のリストまたはリストのリストを使用して作成できます。

例1

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df

その*出力*は次のとおりです-

     0
0    1
1    2
2    3
3    4
4    5

例2

import pandas as pd
data = [[Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df

その*出力*は次のとおりです-

      Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

実施例3

import pandas as pd
data = [[Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df

その*出力*は次のとおりです-

      Name     Age
0     Alex     10.0
1     Bob      12.0
2     Clarke   13.0

注意- dtype パラメータは、Ageカラムのタイプを浮動小数点に変更します。

ndarrays/ListsのDictからDataFrameを作成します

すべての ndarrays は同じ長さでなければなりません。 インデックスが渡される場合、インデックスの長さは配列の長さと等しくなければなりません。

インデックスが渡されない場合、デフォルトでは、インデックスはrange(n)になります。ここで、 n は配列の長さです。

例1

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df

その*出力*は次のとおりです-

      Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

-値0、1、2、3を確認します。 それらは、関数range(n)を使用してそれぞれに割り当てられるデフォルトのインデックスです。

例2

ここで、配列を使用してインデックス付きDataFrameを作成します。

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df

その*出力*は次のとおりです-

         Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

-観察、 index パラメータは各行にインデックスを割り当てます。

辞書のリストからデータフレームを作成する

辞書のリストを入力データとして渡して、DataFrameを作成できます。 辞書キーはデフォルトで列名として使用されます。

例1

次の例は、辞書のリストを渡すことでDataFrameを作成する方法を示しています。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df

その*出力*は次のとおりです-

    a    b      c
0   1   2     NaN
1   5   10   20.0

-観察、NaN(Not a Number)が欠落領域に追加されます。

例2

次の例は、辞書と行インデックスのリストを渡すことでDataFrameを作成する方法を示しています。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df

その*出力*は次のとおりです-

        a   b       c
first   1   2     NaN
second  5   10   20.0

実施例3

次の例は、辞書、行インデックス、および列インデックスのリストを使用してDataFrameを作成する方法を示しています。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2

その*出力*は次のとおりです-

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

-観察、df2 DataFrameはディクショナリキー以外の列インデックスで作成されます。したがって、所定の位置にNaNを追加しました。 一方、df1は辞書キーと同じ列インデックスで作成されるため、NaNが追加されます。

シリーズの辞書からデータフレームを作成する

シリーズの辞書を渡して、DataFrameを作成できます。 結果のインデックスは、渡されたすべてのシリーズインデックスの結合です。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df

その*出力*は次のとおりです-

      one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

-シリーズ1では、ラベル「」d *は渡されませんが、結果では、 *d ラベルではNaNにNaNが追加されます。

例を通して、列の選択、追加、および*削除*を理解しましょう。

列の選択

これを理解するには、DataFrameから列を選択します。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df ['one']

その*出力*は次のとおりです-

a     1.0
b     2.0
c     3.0
d     NaN
Name: one, dtype: float64

列の追加

これを理解するには、既存のデータフレームに新しい列を追加します。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)

# Adding a new column to an existing DataFrame object with column label by passing new series

print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df

print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']

print df

その*出力*は次のとおりです-

Adding a new column by passing as Series:
     one   two   three
a    1.0    1    10.0
b    2.0    2    20.0
c    3.0    3    30.0
d    NaN    4    NaN

Adding a new column using the existing columns in DataFrame:
      one   two   three    four
a     1.0    1    10.0     11.0
b     2.0    2    20.0     22.0
c     3.0    3    30.0     33.0
d     NaN    4     NaN     NaN

列の削除

列は削除またはポップできます。その方法を理解するために例を挙げましょう。

# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),
   'three' : pd.Series([10,20,30], index=['a','b','c'])}

df = pd.DataFrame(d)
print ("Our dataframe is:")
print df

# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df

# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df

その*出力*は次のとおりです-

Our dataframe is:
      one   three  two
a     1.0    10.0   1
b     2.0    20.0   2
c     3.0    30.0   3
d     NaN     NaN   4

Deleting the first column using DEL function:
      three    two
a     10.0     1
b     20.0     2
c     30.0     3
d     NaN      4

Deleting another column using POP function:
   three
a  10.0
b  20.0
c  30.0
d  NaN

行の選択、追加、および削除

例を通して行の選択、追加、削除を理解します。 選択の概念から始めましょう。

ラベルによる選択

行を選択するには、行ラベルを loc 関数に渡します。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.loc['b']

その*出力*は次のとおりです-

one 2.0
two 2.0
Name: b, dtype: float64

結果は、DataFrameの列名としてラベルを持つシリーズです。 そして、シリーズの名前は、それが取得されるラベルです。

整数位置による選択

整数の位置を iloc 関数に渡すことで行を選択できます。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.iloc[2]

その*出力*は次のとおりです-

one   3.0
two   3.0
Name: c, dtype: float64

スライス行

「:」演算子を使用して、複数の行を選択できます。

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df[2:4]

その*出力*は次のとおりです-

   one  two
c  3.0    3
d  NaN    4

行の追加

*append* 関数を使用して、DataFrameに新しい行を追加します。 この関数は、行を最後に追加します。
import pandas as pd

df = pd.DataFrame([[columns = ['a','b'])
df2 = pd.DataFrame([[columns = ['a','b'])

df = df.append(df2)
print df

その*出力*は次のとおりです-

   a  b
0  1  2
1  3  4
0  5  6
1  7  8

行の削除

インデックスラベルを使用して、DataFrameから行を削除またはドロップします。 ラベルが重複している場合、複数の行が削除されます。

上記の例では、ラベルが重複しています。 ラベルをドロップして、ドロップされる行数を確認します。

import pandas as pd

df = pd.DataFrame([[columns = ['a','b'])
df2 = pd.DataFrame([[columns = ['a','b'])

df = df.append(df2)

# Drop rows with label 0
df = df.drop(0)

print df

その*出力*は次のとおりです-

  a b
1 3 4
1 7 8

上記の例では、2つの行に同じラベル0が含まれているため、2つの行が削除されました。