使用Python中的字典值列表创建数据框架结构的解释

使用Python中的字典值列表创建数据框架结构的解释

在数据分析中,我们经常需要用到数据框架(DataFrame)结构。Python中的pandas库提供了高效的数据框架操作方法。而使用字典值列表(List of Dictionaries)创建数据框架是一种常用的方法。本文将详细介绍如何使用Python中的字典值列表创建数据框架结构。

更多Python教程,请阅读:Python 教程

字典值列表

字典值列表是一种包含多个字典的列表,其中每个字典表示一条数据记录。例如:

employee = [
    {'name': 'John', 'age': 32, 'gender': 'M', 'salary': 5000},
    {'name': 'Mary', 'age': 28, 'gender': 'F', 'salary': 6000},
    {'name': 'Tom', 'age': 45, 'gender': 'M', 'salary': 7500},
    {'name': 'Jane', 'age': 33, 'gender': 'F', 'salary': 4500}
]

上面的例子中,包含4个字典的列表代表了4个员工的信息,每个字典中的键表示员工的属性,包括姓名、年龄、性别和工资。

创建数据框架

使用字典值列表创建数据框架的方法非常简单,只需要使用pandas中的DataFrame函数即可。例如,我们可以使用上面的employee列表创建数据框架:

import pandas as pd

df = pd.DataFrame(employee)
print(df)

输出结果如下:

   name  age gender  salary
0  John   32      M    5000
1  Mary   28      F    6000
2   Tom   45      M    7500
3  Jane   33      F    4500

create dataframe

在这个例子中,我们首先导入了pandas库,通过DataFrame函数将employee列表转换成了一个数据框架。使用print函数输出数据框架,可以看到每个字典中的键被作为数据框架的列名,而字典中的值被按行组织在数据框架中。

需要注意的是,如果字典值列表中每个字典中包含的键不一致,那么数据框架中也将包含一样的列。例如,我们将上面employee列表中的John的年龄修改为None:

employee = [
    {'name': 'John', 'age': None, 'gender': 'M', 'salary': 5000},
    {'name': 'Mary', 'age': 28, 'gender': 'F', 'salary': 6000},
    {'name': 'Tom', 'age': 45, 'gender': 'M', 'salary': 7500},
    {'name': 'Jane', 'age': 33, 'gender': 'F', 'salary': 4500}
]

df = pd.DataFrame(employee)
print(df)

输出结果如下:

   name   age gender  salary
0  John  None      M    5000
1  Mary  28.0      F    6000
2   Tom  45.0      M    7500
3  Jane  33.0      F    4500

create dataframe with None field

从结果中可以看到,数据框架中包含了age列,而John的age被表示为None。这是因为在数据框架中,缺失值用NaN表示。

列选择与重排

使用数据框架的最常见操作之一是选择列。我们可以使用dataframe[column_name]来选择指定的列。例如,我们要选择salary列:

salary_df = df['salary']
print(salary_df)

select column from dataframe

输出结果如下:

0    5000
1    6000
2    7500
3    4500
Name: salary, dtype: int64

可以看到,输出结果中包含了选定列的完整信息,其中包括每个值的索引和类型。需要注意的是,因为我们使用的是字典值列表创建数据框架,所以数据框架中的列的顺序与字典中的键的顺序是一致的。如果我们需要按照指定的顺序展示列,可以通过指定列名的列表来完成:

selected_df = df[['name', 'salary', 'gender']]
print(selected_df)

select multiple columns from dataframe

输出结果如下:

   name  salary gender
0  John    5000      M
1  Mary    6000      F
2   Tom    7500      M
3  Jane    4500      F

从结果中可以看到,我们按照指定的列顺序展示了数据框架的子集。

行选择

除了选择列之外,我们还可以根据条件选择行。例如,我们要选择工资大于6000的员工信息:

selected_df = df[df['salary'] > 6000]
print(selected_df)

select subset rows from dataframe

输出结果如下:

  name  age gender  salary
2  Tom   45      M    7500

从结果中可以看到,我们只选择到了工资大于6000的员工Tom的信息。我们使用了df[‘salary’] > 6000作为选择条件,该条件返回了所有salary列大于6000的行。在pandas中,我们可以使用所有支持的逻辑运算符来进行条件选择。

添加列

数据框架中的列可以通过字典值列表中的字典添加。例如,我们添加一个新的列deduction,包含员工工资的10%扣除:

for i in range(len(employee)):
    deduction = employee[i]['salary']*0.1
    employee[i]['deduction'] = deduction

df = pd.DataFrame(employee)
print(df)

add column to dataframe

输出结果如下:

   name  age gender  salary  deduction
0  John   32      M    5000      500.0
1  Mary   28      F    6000      600.0
2   Tom   45      M    7500      750.0
3  Jane   33      F    4500      450.0

可以看到,我们添加了新列deduction。在循环中,我们遍历了employee的每个字典,计算扣除,然后添加一个新的键deduction到字典中。最后,我们使用字典值列表创建了一个数据框架。

如果我们需要添加已经存在的列,我们可以在数据框架上直接操作,例如:

df['bonus'] = [0, 1000, 2000, 500]
print(df)

add existing column to dataframe

输出结果如下:

   name  age gender  salary  deduction  bonus
0  John   32      M    5000      500.0      0
1  Mary   28      F    6000      600.0   1000
2   Tom   45      M    7500      750.0   2000
3  Jane   33      F    4500      450.0    500

索引与选取

数据框架的行可以通过数字或索引进行选择。例如,我们可以通过数字选择第3行:

row = df.iloc[2]
print(row)

select a row from dataframe using index

输出结果如下:

name           Tom
age             45
gender           M
salary        7500
deduction      750
bonus         2000
Name: 2, dtype: object

可以看到,我们选择到了第3行的信息。

如果我们需要通过索引选择特定的行,我们可以将索引设置为数据框架中的一列,然后使用loc函数查找索引:

df.set_index('name', inplace=True)
selected_row = df.loc['Tom']
print(selected_row)

以上代码中,我们将name列设置为索引,然后使用loc函数查找Tom的信息。输出结果如下:

age             45
gender           M
salary        7500
deduction      750
bonus         2000
Name: Tom, dtype: object

可以看到,我们使用索引成功地选择了Tom的信息。

需要注意的是,如果我们选择的行数超过了数据框架的大小,将会报错。因此,在使用索引选择行之前,我们需要确保索引值是唯一的,并且在数据框架中至少存在。

更新数据

更新数据框架中的数据可以使用iloc或loc函数以及赋值操作符完成。例如,我们要将Tom的工资更新为8000:

df.loc['Tom', 'salary'] = 8000
print(df)

update value in dataframe

输出结果如下:

      age gender  salary  deduction  bonus
name                                      
John   32      M    5000      500.0      0
Mary   28      F    6000      600.0   1000
Tom    45      M    8000      750.0   2000
Jane   33      F    4500      450.0    500

可以看到,我们使用了loc函数选择Tom的salary值,然后将该值赋值为8000,成功地更新了数据框架中的数据。

删除列和行

在使用数据框架时,我们也可能需要删除一些列或行。例如,我们要删除提成bonus列:

df.drop(columns=['bonus'], inplace=True)
print(df)

delete column from dataframe

输出结果如下:

      age gender  salary  deduction
name                                
John   32      M    5000      500.0
Mary   28      F    6000      600.0
Tom    45      M    8000      750.0
Jane   33      F    4500      450.0

可以看到,我们使用drop函数删除了指定的列。需要注意的是,drop函数并不直接改变数据框架,而是返回了一个新的数据框架,因此我们需要将inplace参数设置为True才能实现真正的删除。

如果我们需要删除指定的行,可以使用drop函数的index参数:

df.drop(index='Tom', inplace=True)
print(df)

delete row from dataframe

输出结果如下:

      age gender  salary  deduction
name                                
John   32      M    5000      500.0
Mary   28      F    6000      600.0
Jane   33      F    4500      450.0

可以看到,我们成功地删除了Tom的信息。

数据框架的属性

在使用数据框架时,我们可以使用一些常用的属性来获取数据框架的信息。例如,我们可以使用shape属性获取数据框架的形状:

print(df.shape)

output dataframe shape

输出结果为:

(3, 4)

可以看到,数据框架有3行和4列。

我们还可以使用describe函数来获取数据框架的统计信息:

print(df.describe())

output dataframe summary statistics

输出结果为:

             age       salary   deduction
count   3.000000     3.000000    3.000000
mean   31.000000  5166.666667  516.666667
std     2.645751   753.778017   75.377802
min    28.000000  4500.000000  450.000000
25%    30.000000  4750.000000  475.000000
50%    32.000000  5000.000000  500.000000
75%    32.500000  5500.000000  550.000000
max    33.000000  6000.000000  600.000000

可以看到,我们得到了数据框架的一些统计数据,包括计数、平均值、标准差、最小值、25%分位数、50%分位数、75%分位数和最大值。

数据可视化

除了使用属性和函数来分析数据框架之外,我们还可以使用图表或图形来更加直观地展示数据。在pandas中,我们可以使用数据框架自带的plot函数来绘制图表。例如,我们可以绘制一个员工工资的柱状图:

df['salary'].plot(kind='bar')
plt.title('Employee Salary')
plt.xlabel('Employee Name')
plt.ylabel('Salary')
plt.show()

可以看到,我们成功地绘制了一个柱状图,展示了每个员工的工资。

如果我们需要绘制其他类型的图表,可以使用plot函数的kind参数。常用的图表类型包括折线图、散点图、面积图、箱线图等。在绘制图表时,我们也可以添加标题、x轴和y轴标签等元素来更好地展示数据。

综上所述,pandas是一个非常有用的数据分析工具,可以帮助我们有效地处理和分析数据。在工作中,熟练掌握pandas的使用将会使数据分析的过程更加高效和准确。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程