以下是浅析 Pandas 数据结构中的 DataFrame 的完整攻略。
DataFrame 是 Pandas 库中最常用的数据结构之一,类似于 Excel 中的数据表格。DataFrame 可以看作是由多个 Series 组成的,每个 Series 代表着一列数据,而 DataFrame 中的每行数据则对应着多个 Series 中相同位置的元素。
创建 DataFrame 的方法有很多种,最常见的方法是通过传入字典来创建,例如:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [28, 21, 32],
'性别': ['男', '女', '男']}
df = pd.DataFrame(data)
print(df)
输出结果为:
姓名 年龄 性别
0 张三 28 男
1 李四 21 女
2 王五 32 男
DataFrame 的索引方式有两种,一种是使用 loc
,另一种是使用 iloc
。
以 loc
为例,如果我们想查看第一行数据,我们可以这样写:
first_row = df.loc[0]
print(first_row)
输出结果为:
姓名 张三
年龄 28
性别 男
Name: 0, dtype: object
DataFrame 中的数据是可以修改的,例如我们想将张三的年龄修改为 30,我们可以这样写:
df.loc[0, '年龄'] = 30
print(df)
输出结果为:
姓名 年龄 性别
0 张三 30 男
1 李四 21 女
2 王五 32 男
下面再举两个实际的例子来说明 DataFrame 的用法。
假设我们有一组关于学生体育成绩的数据,如下:
学号 | 姓名 | 年级 | 班级 | 性别 | 身高 | 体重 | 800m (s) | 铅球(m) |
---|---|---|---|---|---|---|---|---|
001 | 张三 | 一年级 | 1 班 | 男 | 175 | 70 | 140 | 12 |
002 | 李四 | 二年级 | 3 班 | 男 | 163 | 50 | 180 | 8 |
003 | 王五 | 三年级 | 2 班 | 女 | 155 | 45 | 160 | 9 |
004 | 赵六 | 一年级 | 1 班 | 男 | 180 | 75 | 150 | 10 |
005 | 钱七 | 二年级 | 3 班 | 女 | 168 | 60 | 170 | 7 |
我们可以将这些数据读入到 DataFrame 中:
import pandas as pd
data = pd.read_excel('students_scores.xlsx')
df = pd.DataFrame(data)
print(df)
如果将上面的数据保存在students_scores.xlsx
文件中,那么这段代码会输出如下内容:
学号 姓名 年级 班级 性别 身高 体重 800m (s) 铅球(m)
0 1 张三 一年级 1 班 男 175 70 140 12
1 2 李四 二年级 3 班 男 163 50 180 8
2 3 王五 三年级 2 班 女 155 45 160 9
3 4 赵六 一年级 1 班 男 180 75 150 10
4 5 钱七 二年级 3 班 女 168 60 170 7
我们还可以使用 describe()
方法查看这些数据的基本统计信息:
print(df.describe())
输出结果为:
学号 身高 体重 800m (s) 铅球(m)
count 5.000000 5.000000 5.000000 5.000000 5.000000
mean 3.000000 168.200000 60.000000 160.000000 9.200000
std 1.581139 9.183772 14.142136 22.023747 2.774887
min 1.000000 155.000000 45.000000 140.000000 7.000000
25% 2.000000 163.000000 50.000000 150.000000 8.000000
50% 3.000000 168.000000 60.000000 160.000000 9.000000
75% 4.000000 175.000000 70.000000 170.000000 10.000000
max 5.000000 180.000000 75.000000 180.000000 12.000000
假设我们有一个有关电影票房收入的数据集,如下:
电影名称 | 票房收入(万元) | 上映天数 | 评分 |
---|---|---|---|
复仇者联盟4:终局之战 | 42949 | 92 | 8.4 |
哪吒之魔童降世 | 36287 | 161 | 8.7 |
飞驰人生 | 20436 | 108 | 7.9 |
红海行动 | 15230 | 82 | 8.0 |
我和我的祖国 | 15204 | 80 | 8.0 |
美人鱼 | 14492 | 67 | 6.0 |
海王 | 13772 | 68 | 7.1 |
武林外传 | 12109 | 53 | 8.9 |
煎饼侠 | 10533 | 27 | 6.0 |
战狼2 | 9846 | 70 | 6.0 |
我们可以将这些数据读入到 DataFrame 中:
import pandas as pd
data = {'电影名称': ['复仇者联盟4:终局之战', '哪吒之魔童降世', '飞驰人生', '红海行动', '我和我的祖国', '美人鱼', '海王', '武林外传', '煎饼侠', '战狼2'],
'票房收入(万元)': [42949, 36287, 20436, 15230, 15204, 14492, 13772, 12109, 10533, 9846],
'上映天数': [92, 161, 108, 82, 80, 67, 68, 53, 27, 70],
'评分': [8.4, 8.7, 7.9, 8.0, 8.0, 6.0, 7.1, 8.9, 6.0, 7.0]}
df = pd.DataFrame(data)
print(df)
输出结果为:
电影名称 票房收入(万元) 上映天数 评分
0 复仇者联盟4:终局之战 42949 92 8.4
1 哪吒之魔童降世 36287 161 8.7
2 飞驰人生 20436 108 7.9
3 红海行动 15230 82 8.0
4 我和我的祖国 15204 80 8.0
5 美人鱼 14492 67 6.0
6 海王 13772 68 7.1
7 武林外传 12109 53 8.9
8 煎饼侠 10533 27 6.0
9 战狼2 9846 70 7.0
我们可以根据票房收入对电影进行排序:
df = df.sort_values('票房收入(万元)', ascending=False)
print(df)
输出结果为:
电影名称 票房收入(万元) 上映天数 评分
0 复仇者联盟4:终局之战 42949 92 8.4
1 哪吒之魔童降世 36287 161 8.7
2 飞驰人生 20436 108 7.9
3 红海行动 15230 82 8.0
4 我和我的祖国 15204 80 8.0
5 美人鱼 14492 67 6.0
6 海王 13772 68 7.1
7 武林外传 12109 53 8.9
8 煎饼侠 10533 27 6.0
9 战狼2 9846 70 7.0
本文链接:http://task.lmcjl.com/news/17260.html