Python-pandas-dataframe
Pythonパンダ-DataFrame
データフレームは2次元のデータ構造です。つまり、データは表形式で行と列に配置されます。
DataFrameの機能
- 潜在的に列は異なるタイプです
- サイズ-可変
- ラベル付き軸(行と列) *行と列に対して算術演算を実行できます
構造
学生のデータでデータフレームを作成していると仮定しましょう。
SQLテーブルまたはスプレッドシートのデータ表現と考えることができます。
pandas.DataFrame
パンダのDataFrameは、次のコンストラクタを使用して作成することができます-
pandas.DataFrame( data, index, columns, dtype, copy)
コンストラクタのパラメータは次のとおりです-
Sr.No | Parameter & Description |
---|---|
1 |
データは、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つの行が削除されました。