软件测试|数据分析神器pandas教程(三)

举报
霍格沃兹测试开发 发表于 2023/04/10 11:18:32 2023/04/10
【摘要】 前言前面我们介绍了pandas Series数据结构,本篇文章我们来介绍另外一种pandas数据结构——DataFrame。 DataFrameDataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。如下图所示:DataFrame ...

前言

前面我们介绍了pandas Series数据结构,本篇文章我们来介绍另外一种pandas数据结构——DataFrame。

DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。如下图所示:

在这里插入图片描述
在这里插入图片描述

DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

  • data:一组数据(ndarray、series, map, lists, dict 等类型)
  • index:索引值,或者可以称为行标签
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n)
  • dtype:数据类型
  • copy:拷贝数据,默认为 False

下面是我们的一个简单实例:

import pandas as pd

data = [['Muller',33],['Sane',27],['Reus',30]]

df = pd.DataFrame(data,columns=['Player','Age'],dtype=float)

print(df)
------------
输出结果如下:
   Player   Age
0  Muller  33.0
1    Sane  27.0
2    Reus  30.0

同样,我们也可以使用ndarrays 创建DataFrame,代码如下

import pandas as pd

data = {'Player':['Muller', 'Sane', 'Reus'], 'Age':[33, 27, 30]}

df = pd.DataFrame(data,columns=['Player','Age'],dtype=float)

print(df)
-------------------------------------
输出结果如下:
   Player   Age
0  Muller  33.0
1    Sane  27.0
2    Reus  30.0

注:ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。

从以上输出结果可以知道, DataFrame 数据类型一个表格,包含 rows(行) 和 columns(列):

在这里插入图片描述

使用字典(key/value)创建DataFrame,代码如下:

import pandas as pd

data = [{'Muller': 18, 'Sane': 8}, {'Muller': 33, 'Sane': 27, 'Reus': 30}]

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

--------------------------
输出结果如下:
   Muller  Sane  Reus
0      18     8   NaN
1      33    27  30.0

注:没有对应的部分数据为 NaN

Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,实例如下:

import pandas as pd

data = {
  "Goals": [27, 20, 18],
  "Asts": [20, 16, 12]
}

# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)

# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])
-----------------------
输出结果如下:
Goals    27
Asts     20
Name: 0, dtype: int64
Goals    20
Asts     16
Name: 1, dtype: int64

注:返回结果其实是一个 Pandas Series 数据。

也可以返回多行数据,使用 [[ … ]] 格式,… 为各行的索引,以逗号隔开:

import pandas as pd

data = {
  "Goals": [27, 20, 18],
  "Asts": [20, 16, 12]
}

# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)

print(df.loc[[0,1]])

--------------------
输出结果如下:
   Goals  Asts
0     27    20
1     20    16

同样地,我们也可以指定索引值,代码如下:

import pandas as pd

data = {
  "goals": [35, 30, 28],
  "asts": [15, 20, 22]
}

df = pd.DataFrame(data, index = ["2020", "2021", "2022"])

print(df)
--------------------------------------------
输出结果如下:
      goals  asts
2020     35    15
2021     30    20
2022     28    22

同样地,我们可以通过索引来返回某一行的数据,代码如下:

import pandas as pd

data = {
  "goals": [35, 30, 28],
  "asts": [15, 20, 22]
}

df = pd.DataFrame(data, index = ["2020", "2021", "2022"])
print(df.loc["2020"])

---------------------------------------
输出结果如下:
goals    35
asts     15
Name: 2020, dtype: int64

总结

本文主要介绍了pandas的DataFrame数据结构,DataFrame是一个表格型的数据结构,也可以看做是
由 Series 组成的字典,只是共用索引,DataFrame同样可以根据索引实返回指定数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。