この記事では、単一または複数のリストをDataFrameに変換する方法について説明します。
Pandasは、DataFrameのコンストラクターを提供し、オブジェクトを渡すことでDataframeを作成します。
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
ここで、データパラメータはnumpy ndarray、dict、または他のDataFrameです。また、列とインデックス は列とインデックスのラベル用です。
これを使用して、リストをリストからデータフレームオブジェクトに変換します。
リストのリストからDataFrameを作成する
リストのリスト、すなわち
# List of lists
students = [ ['jack', 34, 'Sydeny'] ,
['Riti', 30, 'Delhi' ] ,
['Aadi', 16, 'New York'] ]
このリストをDataFrameのコンストラクターに渡して、データフレームオブジェクトを作成します。
# Creating a dataframe object from listoftuples
dfObj = pd.DataFrame(students)
作成されたDataFrameの内容は次のとおりです。
0 1 2
0 jack 34 Sydeny
1 Riti 30 Delhi
2 Aadi 16 New York
タプルのリストからDataFrameを作成します
リストのリストと同じように、データフレーム作成者にタプルのリストを渡して、データフレームを作成できます。タプルのリストがあるとします。
# List of Tuples
students = [ ('jack', 34, 'Sydeny') ,
('Riti', 30, 'Delhi' ) ,
('Aadi', 16, 'New York') ]
このタプルのリストをDataFrameのコンストラクターに渡して、DataFrameオブジェクトを作成します。
# Creating a dataframe object from listoftuples
dfObj = pd.DataFrame(students)
作成されたデータフレームの内容は次のとおりです。
0 1 2
0 jack 34 Sydeny
1 Riti 30 Delhi
2 Aadi 16 New York
列とインデックスの両方のラベルがデフォルトです。しかし、それらを提供することもできます。
リストからデータフレームを作成し、列名とインデックスを設定
#Convert list of tuples to dataframe and set column names and indexes
dfObj = pd.DataFrame(students, columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
作成されたデータフレームの内容は次のとおりです。
Name Age City
a jack 34 Sydeny
b Riti 30 Delhi
c Aadi 16 New York
タプルのリストからデータフレームを作成し、特定の列をスキップします
タプルのリストには、各タプルに3つのエントリがあります。1番目と3番目のエントリのみを使用する場合はどうなりますか?
タプルの2番目のエントリをスキップしてデータフレームを作成しましょう。
# Create datafrae from student list but skip column 'Age' i.e. only with 2 columns
dfObj = pd.DataFrame.from_records(students, exclude=['Age'], columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
作成されたデータフレームの内容は次のとおりです。
Name City
a jack Sydeny
b Riti Delhi
c Aadi New York
複数のリストからデータフレームを作成する
たとえば、3つの異なるリストがあるとします。
listOfNames = ['jack', 'Riti', 'Aadi']
listOfAge = [34, 30, 16]
listOfCity = ['Sydney', 'Delhi', 'New york']
次に、各リストを列としてデータフレームに変換します。それを行う方法を見てみましょう。
リストを圧縮してタプルのリストを作成します。
# Create a zipped list of tuples from above lists
zippedList = list(zip(listOfNames, listOfAge, listOfCity))
ziipledListsの内容は、
[('jack', 34, 'Sydney'), ('Riti', 30, 'Delhi'), ('Aadi', 16, 'New york')]
このzipされたリストでデータフレームを作成しましょう。
# Create a dataframe from zipped list
dfObj = pd.DataFrame(zippedList, columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
作成されたデータフレームの内容は次のとおりです。
Name Age City
a jack 34 Sydney
b Riti 30 Delhi
c Aadi 16 New york
完全な例は次のとおりです。
import pandas as pd
def main():
# List of lists
students = [ ['jack', 34, 'Sydeny'] ,
['Riti', 30, 'Delhi' ] ,
['Aadi', 16, 'New York'] ]
print("****Create a Dataframe from list of lists *****")
# Creating a dataframe object from listoftuples
dfObj = pd.DataFrame(students)
print("Dataframe : " , dfObj, sep='\n')
# List of Tuples
students = [ ('jack', 34, 'Sydeny') ,
('Riti', 30, 'Delhi' ) ,
('Aadi', 16, 'New York') ]
print("****Create a Dataframe from list of tuple *****")
# Creating a dataframe object from listoftuples
dfObj = pd.DataFrame(students)
print("Dataframe : " , dfObj, sep='\n')
print("****Create a Dataframe from list of tuple, also set column names and indexes *****")
#Convert list of tuples to dataframe and set column names and indexes
dfObj = pd.DataFrame(students, columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
print("Dataframe : " , dfObj, sep='\n')
print("****Create dataframe from list of tuples and skip certain columns*********")
# Create datafrae from student list but skip column 'Age' i.e. only with 2 columns
dfObj = pd.DataFrame.from_records(students, exclude=['Age'], columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
print("Dataframe : " , dfObj, sep='\n')
print("***Create dataframe from multiple lists***")
listOfNames = ['jack', 'Riti', 'Aadi']
listOfAge = [34, 30, 16]
listOfCity = ['Sydney', 'Delhi', 'New york']
# Create a zipped list of tuples from above lists
zippedList = list(zip(listOfNames, listOfAge, listOfCity))
print("zippedList = " , zippedList)
# Create a dataframe from zipped list
dfObj = pd.DataFrame(zippedList, columns = ['Name' , 'Age', 'City'], index=['a', 'b', 'c'])
print("Dataframe : " , dfObj, sep='\n')
if __name__ == '__main__':
main()
出力:
****Create a Dataframe from list of lists *****
Dataframe :
0 1 2
0 jack 34 Sydeny
1 Riti 30 Delhi
2 Aadi 16 New York
****Create a Dataframe from list of tuple *****
Dataframe :
0 1 2
0 jack 34 Sydeny
1 Riti 30 Delhi
2 Aadi 16 New York
****Create a Dataframe from list of tuple, also set column names and indexes *****
Dataframe :
Name Age City
a jack 34 Sydeny
b Riti 30 Delhi
c Aadi 16 New York
****Create dataframe from list of tuples and skip certain columns*********
Dataframe :
Name City
a jack Sydeny
b Riti Delhi
c Aadi New York
***Create dataframe from multiple lists***
zippedList = [('jack', 34, 'Sydney'), ('Riti', 30, 'Delhi'), ('Aadi', 16, 'New york')]
Dataframe :
Name Age City
a jack 34 Sydney
b Riti 30 Delhi
c Aadi 16 New york