从Dict列表中创建一个Pandas数据框架
Pandas DataFrame是一个二维标记的数据结构,其列有可能是不同的类型。它通常是最常用的pandas对象。Pandas DataFrame可以通过多种方式使用Python创建。让我们来讨论如何从字典列表中创建一个Pandas DataFrame。
方法1:使用from_records将字典列表转换为pandas DataFrame
Pandas是DataFrame的from records()函数。它将结构化数据或记录变为DataFrame。它将结构化的ndarray、tuple或dict序列,或DataFrame转换为DataFrame对象。
import pandas as pd
# Initialise data to lists.
data = [{'Geeks': 'dataframe', 'For': 'using', 'geeks': 'list'},
{'Geeks':10, 'For': 20, 'geeks': 30}]
df = pd.DataFrame.from_records(data,index=['1', '2'])
print(df)
输出:
Geeks For geeks
0 dataframe using list
1 10 20 30
方法2:使用pd.DataFrame.from_dict将字典列表转换为pandas DataFrame
Pandas中的DataFrame.from dict()方法。它从一个dict或数组类型的字典中建立DataFrame。通过使用字典的列或索引并允许Dtype声明,它构建了一个DataFrame对象。
import pandas as pd
# Initialise data to lists.
data = [{'Geeks': 'dataframe', 'For': 'using', 'geeks': 'list'},
{'Geeks':10, 'For': 20, 'geeks': 30}]
df = pd.DataFrame.from_dict(data)
print(df)
输出:
Geeks For geeks
0 dataframe using list
1 10 20 30
方法3:使用pd.json_normalize将字典列表转换为pandas DataFrame
Pandas有一个很好的内置函数,叫做json_normalize(),可以将简单到中等程度的半结构化的嵌套JSON结构平铺到平面表格。
import pandas as pd
# Initialise data to lists.
data = [{'Geeks': 'dataframe', 'For': 'using', 'geeks': 'list'},
{'Geeks':10, 'For': 20, 'geeks': 30}]
df=pd.json_normalize(data)
print(df)
输出:
Geeks For geeks
0 dataframe using list
1 10 20 30
方法4: 使用pd.DataFrame将一个字典列表转换为pandas DataFrame。
示例 1:
我们知道,当从字典中创建一个数据框架时,键将是结果Dataframe中的列。当我们从字典列表中创建Dataframe时,匹配的键将是Dataframe的列,相应的值将是Dataframe的行。如果字典中没有匹配的值和列,那么NaN值将被插入到结果Dataframe中。
# Python code demonstrate how to create
# Pandas DataFrame by lists of dicts without matching key-value pair
import pandas as pd
# Initialise data to lists.
data = [{'Geeks': 'dataframe', 'For': 'using', 'geeks': 'list', 'Portal': 10000},
{'Geeks':10, 'For': 20, 'geeks': 30}]
# Creates DataFrame.
df = pd.DataFrame(data)
# Print the data
df
输出:
我们可以从上面的例子中得出结论,如果在字典列表中没有匹配的键值对,那么NaN值将被插入到该位置。
示例 2:
通过为索引和列明确提供用户定义的值来创建一个数据框架
import pandas as pd
# Initialise data to lists.
data = [{'Geeks': 'dataframe', 'For': 'using', 'geeks': 'list'},
{'Geeks': 10, 'For': 20, 'geeks': 30}]
# With two column indices, values same
# as dictionary keys
df1 = pd.DataFrame(data, index=['ind1', 'ind2'],
columns=['Geeks', 'For'])
# With two column indices with
# one index with other name
df2 = pd.DataFrame(data, index=['indx', 'indy'])
# print for first data frame
print(df1, "\n")
# Print for second DataFrame.
print(df2)
输出: