Python 字典转 DataFrame
在数据分析或者机器学习应用中,我们经常需要将字典转化为 DataFrame。DataFrame 是 Pandas 中的一个数据结构,类似于 Excel 中的表格。
什么是字典?什么是 DataFrame?
字典是 Python 常用的数据类型之一,它是由键值对组成的无序集合,可以通过键访问值。
下面是一个字典的例子:
data = {"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 32, 18, 47],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"],
"height": [165, 170, 180, 175]}
可以通过以下方式访问字典中的数据:
print(data["name"]) # 输出 ['Alice', 'Bob', 'Charlie', 'Dave']
print(data["age"]) # 输出 [25, 32, 18, 47]
DataFrame 是 Pandas 中的一种数据结构,它是一个带有标签的二维数组。每一列都可以有不同的数据类型(例如字符串、整数、浮点数等)。
下面是一个 DataFrame 的例子:
import pandas as pd
df = pd.DataFrame({"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 32, 18, 47],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"],
"height": [165, 170, 180, 175]})
print(df)
输出结果:
name age city height
0 Alice 25 Beijing 165
1 Bob 32 Shanghai 170
2 Charlie 18 Guangzhou 180
3 Dave 47 Shenzhen 175
如何将字典转换为 DataFrame?
可以使用 Pandas 中的 DataFrame()
函数将字典数据转换为 DataFrame。该函数的语法如下:
df = pd.DataFrame(data)
例如,我们可以使用以下代码将上面的字典转换为 DataFrame:
import pandas as pd
data = {"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 32, 18, 47],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"],
"height": [165, 170, 180, 175]}
df = pd.DataFrame(data)
print(df)
输出结果与上面的示例相同。
如果想要指定 DataFrame 的列顺序,可以使用以下代码:
df = pd.DataFrame(data, columns=["name", "age", "city", "height"])
如果要选择只包括部分列,可以使用以下代码:
df = pd.DataFrame(data, columns=["name", "age"])
在这种情况下,只包括 “name” 和 “age” 两列,而 “city” 和 “height” 则被省略。
如果在字典中有缺失的键值对,可以使用 fillna()
方法进行填充。以下是一个例子:
import pandas as pd
data = {"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 32, 18, 47],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]}
df = pd.DataFrame(data).fillna(0)
print(df)
输出结果:
name age city height
0 Alice 25 Beijing 0.0
1 Bob 32 Shanghai 0.0
2 Charlie 18 Guangzhou 0.0
3 Dave 47 Shenzhen 0.0
如何对 DataFrame 进行操作?
下面是一些常用的 DataFrame 操作:
df.head(n)
:返回 DataFrame 中前 n 行,默认为 5。df.tail(n)
:返回 DataFrame 中后 n 行,默认为 5。df.shape
:返回 DataFrame 的维度,即行数和列数。df.columns
:返回 DataFrame 的列名。df.dtypes
:返回 DataFrame 中每一列的数据类型。df.info()
:输出 DataFrame 的基本信息,包括行数、列数、缺失值个数、每一列的数据类型等。df.describe()
:输出 DataFrame 中数值型变量的基本统计量,包括个数、均值、标准差、最小值、最大值等。df.sort_values(by=列名)
:根据指定的列进行排序。df.groupby(by=列名)
:对 DataFrame 进行分组,通常和一些聚合函数(如mean()
、sum()
等)一起使用。
下面是一些简单的例子:
import pandas as pd
data = {"name": ["Alice", "Bob", "Charlie", "Dave"],
"age": [25, 32, 18, 47],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"],
"height": [165, 170, 180, 175]}
df = pd.DataFrame(data)
print(df.head()) # 输出前 5 行
print(df.tail()) # 输出后 5 行
print(df.shape) # 输出维度
print(df.columns) # 输出列名
print(df.dtypes) # 输出数据类型
print(df.info()) # 输出基本信息
print(df.describe()) # 输出基本统计量
print(df.sort_values(by="age")) # 根据年龄排序
print(df.groupby(by="city").mean()) # 按城市分组,并计算平均值
输出结果:
name age city height
0 Alice 25 Beijing 165
1 Bob 32 Shanghai 170
2 Charlie 18 Guangzhou 180
3 Dave 47 Shenzhen 175
name age city height
0 Alice 25 Beijing 165
1 Bob 32 Shanghai 170
2 Charlie 18 Guangzhou 180
3 Dave 47 Shenzhen 175
(4, 4)
Index(['name', 'age', 'city', 'height'], dtype='object')
name object
age int64
city object
height int64
dtype: object
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 4 non-null object
1 age 4 non-null int64
2 city 4 non-null object
3 height 4 non-null int64
dtypes: int64(2), object(2)
memory usage: 256.0+ bytes
None
age height
count 4.000000 4.000000
mean 30.500000 172.500000
std 12.125724 6.454972
min 18.000000 165.000000
25% 23.250000 169.250000
50% 28.500000 172.500000
75% 35.750000 175.750000
max 47.000000 180.000000
name age city height
2 Charlie 18 Guangzhou 180
0 Alice 25 Beijing 165
1 Bob 32 Shanghai 170
3 Dave 47 Shenzhen 175
age height
city
Beijing 25 165
Guangzhou 18 180
Shanghai 32 170
Shenzhen 47 175
结论
使用 Pandas 中的 DataFrame()
函数可以轻松地将字典转换为 DataFrame,而 DataFrame 可以方便地对数据进行操作和分析。希望这篇文章对你学习 Python 数据分析有所帮助!记得熟悉 DataFrame 的基本操作和常用函数,可以让你更加高效地进行数据分析和处理。