前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DataFrame和Series的使用

DataFrame和Series的使用

作者头像
@小森
发布2024-03-15 10:32:10
640
发布2024-03-15 10:32:10
举报
文章被收录于专栏:xiaosenxiaosen

DataFrame和Series是Pandas最基本的两种数据结构

可以把DataFrame看作由Series对象组成的字典,其中key是列名,值是Series Series和Python中的列表非常相似,但是它的每个元素的数据类型必须相同

创建 Series 的最简单方法是传入一个Python列表

代码语言:javascript
复制
import pandas as pd
s = pd.Series([ ' banana ' ,42]
print(s)
代码语言:javascript
复制
输出结果
0     banana
1         42
dtype: object

创建Series时,可以通过index参数 来指定行索引

代码语言:javascript
复制
s = pd.Series(['Bill Gates','男'],index=['姓名','性别'])
 
 
姓名    Bill Gates
性别             男

Series代表一列数据, 需要注意 Pandas里面没有一种数据结构对应行的概念

创建DataFrame

代码语言:javascript
复制
name_list = pd.DataFrame({'姓名':['Tome','Bob'],'职业':['AI工程师','AI架构师'],'年龄':[28,36]})
# 生成三列数据,列索引分别为姓名,职业和年龄

pd.DataFrame() 默认第一个参数放的就是数据 - data 数据 - columns 列名

- index 行索引名

代码语言:javascript
复制
pd.DataFrame(data={'职业':['AI工程师','AI架构师'],'年龄':[28,36]},columns=['职业','年龄'],index=['Tome','Bob'])
# 原始行索引为0,1,现在行索引为Tome,Bob

Series DataFrame 在这里调用的时候, 都是大写的 (Pandas 的API 有些是大写字母开头的)

Series常用属性

1.加载CSV文件

代码语言:javascript
复制
data = pd.read_csv('data/nobel_prizes.csv',index_col='id')

2.使用 DataFrame的loc 属性获取数据集里的一行,就会得到一个Series对象

代码语言:javascript
复制
first_row = data.loc[941]
first_row

3.可以通过 index 和 values属性获取行索引和值

代码语言:javascript
复制
first_row.values  # 获取Series中所有的值, 返回的是np.ndarray对象
代码语言:javascript
复制
first_row.index # 返回Series的行索引

Series的一些属性

Series常用方法

针对数值型的Series,可以进行常见计算

代码语言:javascript
复制
share = data.share
share.mean()         # 计算平均值
share.max()
share.std()          # 计算标准差
share.value_counts() # 统计每个取值在数据集中出现了多少次
share.count()        # 返回有多少非空值
share.describe()     # 一次性计算出 每一列 的关键统计量 平均值, 标准差, 极值, 分位数
movie.head(10)       # 默认取前5条数据

查看数据类型及属性

代码语言:javascript
复制
# 查看df类型
type(df) 
# 查看df的shape属性,可以获取DataFrame的行数,列数
df.shape
# 查看df的columns属性,获取DataFrame中的列名
df.columns
# 查看df的dtypes属性,获取每一列的数据类型
df.dtypes
df.info()

Pandas与Python常用数据类型对照

加载筛选数据

df根据列名加载部分列数据:加载一列数据,通过df['列名']方式获取,加载多列数据,通过df[['列名1','列名2',...]]。

df按行加载部分数据:先打印前5行数据 观察第一列 print(df.head()) 最左边一列是行号,也就是DataFrame的行索引 Pandas默认使用行号作为行索引。

代码语言:javascript
复制
loc方法传入行索引,来获取DataFrame的部分数据(一行,或多行)
df.loc[0]
df.loc[99]
df.loc[last_row_index]

iloc : 通过行号获取行数据
iloc传入的是索引的序号,loc是索引的标签
使用iloc时可以传入-1来获取最后一行数据,使用loc的时候不行

loc和iloc属性既可以用于获取列数据,也可以用于获取行数据
df.loc[[行],[列]]
df.iloc[[行],[列]]
代码语言:javascript
复制
df.loc[:,['country','year','pop']]
# 获取全部的行,但每一行的列内容接受三个

df.iloc[:,[0,2,4,-1]]
df.loc[:,[0,2,4,-1]]
df.iloc[:,0:6:2]       # 所有行, 第0 , 第2 第4列

可以通过行和列获取某几个格的元素

分组和聚合运算

先将数据分组 对每组的数据再去进行统计计算如,求平均,求每组数据条目数(频数)等 再将每一组计算的结果合并起来 可以使用DataFrame的groupby方法完成分组/聚合计算

代码语言:javascript
复制
df.groupby(by='year')[['lifeExp','pop','gdpPercap']].mean()
# 根据year分组,查看每年的life平均值,pop平均值和gpd平均值,用mean做聚合运算

也可以根据两个列分组,形成二维数据聚合

代码语言:javascript
复制
df.groupby(['continent'])['country'].nunique()
df.groupby('continent')['lifeExp'].max()
# 可以使用 nunique 方法 计算Pandas Series的唯一值计数
# 可以使用 value_counts 方法来获取Pandas Series 的频数统计

df.groupby(‘continent’) → dataframeGroupby对象就是把continent取值相同的数据放到一组中 df.groupby(‘continent’)[字段] → seriesGroupby对象 从分号组的Dataframe数据中筛序出一列 df.groupby(‘continent’)[字段].mean() seriesGroupby对象再调用mean()/其它聚合函数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Series常用属性
  • Series常用方法
  • 查看数据类型及属性
  • 加载筛选数据
  • 分组和聚合运算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档