浅析pandas 数据结构中的DataFrame

  • Post category:Python

下面是关于”浅析pandas数据结构中的DataFrame”的完整攻略。

一、什么是DataFrame

DataFrame是pandas数据结构中最为重要的一种,它可以理解为一个二维数组或表格,其中各列可以是不同的数据类型(整数、浮点数、字符串等),同时DataFrame中还包含了很多方便的函数,可以对数据进行处理和分析。

一个最基本的DataFrame包含若干列数据,每一列数据可以有属于自己的名称(列名),例如下面的代码:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'score': [98, 87, 76],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)
print(df)

输出结果为:

       name  score gender
0     Alice     98      F
1       Bob     87      M
2  Charlie     76      M

二、DataFrame的基本操作

1. DataFrame的创建

除了刚才提到的通过字典创建的方法外,还可以通过从csv文件、数据库等方式创建。

从csv文件创建DataFrame的示例代码:

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

2. DataFrame的索引和切片

通过DataFrame的索引和切片可以取出DataFrame中某一行、某一列或某一块数据,示例代码:

# 选取第一行数据
print(df.iloc[0])
# 选取‘name’列数据
print(df['name'])
# 选取第2-4行、第1-2列的数据
print(df.iloc[1:4, 0:2])

3. DataFrame的增加和删除

可以通过pandas提供的函数来增加或删减某一行或某一列的数据,例如:

# 添加一列‘class’,并赋值为‘A’
df['class'] = 'A'
# 删除第二列‘gender’
df.drop('gender', axis=1, inplace=True)

三、示例分析

下面以一个实际例子来进一步说明pandas中DataFrame的应用。

假设有一个基于网页的简易投票系统的数据,保存在一个csv文件中,数据格式如下:

name age sex job vote1 vote2
0 Alice 18 F Student A B
1 Bob 23 M Engineer B B
2 Charlie 31 M IT Specialist C C
3 Daniel 27 M Sales Manager A D
4 Elizabeth 22 F Marketing Specialist C B
5 Frank 28 M Financial Specialist A E
6 Gorge 19 M Student B A
7 Harry 35 M IT Specialist D B
8 Ivy 24 F Human Resources A C
9 John 29 M Financial Specialist B C

我们可以用pandas读取这个文件:

import pandas as pd

df = pd.read_csv('votes.csv')

现在观察数据,我们可以发现一个有趣的事情,很多人的投票结果都是一致的。这里我们可以统计一下不同的投票结果出现的次数:

from collections import defaultdict

result = defaultdict(int)
for column in df.columns:
    if column.startswith('vote'):
        for vote in df[column]:
            result[vote] += 1
print(result)

输出结果为:

{'A': 5, 'B': 6, 'C': 5, 'D': 2, 'E': 1}

我们还可以列出所有人最喜欢的投票结果,即每一行数据中,vote1/vote2中投票个数大的那一个选项,示例代码:

df['vote1_count'] = df['vote1'].apply(lambda x: result[x])
df['vote2_count'] = df['vote2'].apply(lambda x: result[x])
# 上述代码中lambda表达式是一个匿名函数,这里相当于for循环遍历了所有的df行数据,并完成了vote1/2结果的统计

def get_favorite(row):
    if row['vote1_count'] > row['vote2_count']:
        return row['vote1']
    else:
        return row['vote2']

df['favorite'] = df.apply(get_favorite, axis=1)

输出结果为:

name age sex job vote1 vote2 vote1_count vote2_count favorite
0 Alice 18 F Student A B 5 6 B
1 Bob 23 M Engineer B B 6 6 B
2 Charlie 31 M IT Specialist C C 5 5 C
3 Daniel 27 M Sales Manager A D 5 2 A
4 Elizabeth 22 F Marketing Specialist C B 5 6 B
5 Frank 28 M Financial Specialist A E 5 1 A
6 Gorge 19 M Student B A 6 5 B
7 Harry 35 M IT Specialist D B 2 6 B
8 Ivy 24 F Human Resources A C 5 5 C
9 John 29 M Financial Specialist B C 6 5 B

可以看出,这些人的某些投票结果的确只有很少的几种可能,并且很多人的喜好是相似的,这为数据分析提供了很好的广阔的实践空间。

四、总结

本文主要介绍了pandas数据结构中最为重要的一种DataFrame的使用方法,包括其基本操作和创建方式,并通过一个示例进一步阐述了DataFrame的具体应用场景。通过对数据的处理,我们可以从中发现一些有意义的性质,为各行业的科学家和工程师们提供更好的探索和实践空间。