当前位置: 首页 > article >正文

数据处理与统计分析——04-Pandas中Series的常用方法、属性、布尔索引、运算操作

Series

概述

  • Series也是Pandas中的最基本的数据结构对象,也是DataFrame的列对象或者行对象,series本身也具有行索引。
  • Series是一种类似于一维数组的对象,由下面两个部分组成:
    • values:一组数据(numpy.ndarray类型)
    • index:相关的数据行索引标签;如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

(1) Series的常用属性

  • 常见属性

    属性说明
    loc使用索引值取子集
    iloc使用索引位置取子集
    dtype或dtypesSeries内容的类型
    TSeries的转置矩阵
    shape数据的维数
    sizeSeries中元素的数量
    valuesSeries的值
    indexSeries的索引值
    • loc属性
    first_row = data.loc[941]
    print(first_row)        # 获取第一行数据, 但是是以列的方式展示的
    print(type(first_row))  # <class 'pandas.core.series.Series'>
    
    • iloc属性
    first_row = data.iloc[0] # 使用索引位置获取自己
    print(first_row)        # 获取第一行数据, 但是是以列的方式展示的
    print(type(first_row))  # <class 'pandas.core.series.Series'>
    
    • dtype 或 dtypes
    print(first_row.dtype)          # 打印Series的元素类型, object表示字符串
    print(first_row['year'].dtype)  # 打印Series的year列的元素类型, int64
    
    # 打印Series的year列的元素类型, 该列值为字符串, 字符串没有dtype属性, 所以报错.
    print(first_row['firstname'].dtype)  
    
    • shape 和 size属性
    print(first_row.shape)		# 维度
    # 结果为: (7,)		因为有7列元素
    print(first_row.size)		# 元素个数: 7
    
    • values 属性
    print(first_row.values) # 获取Series的元素值
    
    • index属性
    print(first_row.index)  # 获取Series的索引
    
    print(first_row.keys()) # Series对象的keys()方法, 效果同上.
    

(2) Series的常用方法

  • 常用方法

    方法说明
    append连接两个或多个Series
    corr计算与另一个Series的相关系数
    cov计算与另一个Series的协方差
    describe计算常见统计量
    drop_duplicates返回去重之后的Series
    equals判断两个Series是否相同
    get_values获取Series的值,作用与values属性相同
    hist绘制直方图
    isinSeries中是否包含某些值
    min返回最小值
    max返回最大值
    mean返回算术平均值
    median返回中位数
    mode返回众数
    quantile返回指定位置的分位数
    replace用指定值代替Series中的值
    sample返回Series的随机采样值
    sort_values对值进行排序
    to_frame把Series转换为DataFrame
    unique去重返回数组
    value_counts统计不同值数量
    keys获取索引值
    head查看前5个值
    tail查看后5个值
  • 代码演示

    # 1. 创建Series对象.
    s1 = pd.Series(data=[1, 2, 3, 4, 2, 3], index=['A', 'B', 'C', 'D', 'E', 'F'])
    print(s1)
    
    # 2. 演示Series对象的常用方法.
    print(len(s1))      # 获取长度, 6
    print(s1.head())    # 获取前5条数据
    print(s1.head(n=2)) # 获取前2条数据
    
    print(s1.tail())    # 获取后5条数据
    print(s1.tail(n=3)) # 获取后3条数据
    
    print(s1.keys())    # 获取所有的列名
    
    print(s1.tolist())  # Series -> list列表
    print(s1.to_list()) # 效果同上
    print(s1.to_frame())# Series -> DataFrame对象
    
    print(s1.sort_values())                 # 根据 值进行排序 默认 asc=True 升序 从小到大
    print(s1.sort_values(ascending=False))  # 根据 值进行排序, False为降序 从大到小
    print(s1.sort_index())                  # 根据 索引进行排序, 默认升序
    
    # 平均值, 最大值, 最小值, 求和, 标准差...
    print(s1.mean())
    print(s1.max())
    print(s1.min())
    print(s1.sum())
    print(s1.std())     # 标准差
    print(s1.var())     # 方差
    
    # 查看各列的 非空值总数
    print(s1.count())
    # 统计每个元素的个数
    print(s1.value_counts())    # 类似于SQL语句: select 性别, count(id) from 表名 group by 性别;
    # 查看 Series列 的详细信息
    print(s1.describe())
    

(3) Series的布尔索引

# 1. 读取数据   True -> 要, False -> 不要
df6 = pd.read_csv('data/scientists.csv')
df6
#%%
# 2. 查看每列的详细信息
df6.describe()   # 统计信息
df6.info         # 详细信息
#%%
# 3. 从 df对象中 -> 获取 Series对象
series_age = df6.Age
series_age
#%%
# 4. 演示 Series对象的 布尔索引
bool_list = [True, False, False, True, True, False, False, True]
print(series_age[bool_list])
#%%
# 5. 筛选年龄大于平均年龄的科学家
# 5.1 获取平均年龄
avg_mean = series_age.mean()
avg_mean
#%%
# 5.2 看看当前年龄 是否大于 平均年龄
cur_bool = [series_age > avg_mean]
cur_bool
#%%
# 5.3 获取 年龄大于平均年龄的科学家
df6.Name[series_age > avg_mean]
#%%
# 5.3 方式二
df6['Name'][df6['Age'] > df6['Age'].mean()]

(4) Series的运算

# 场景1: Series对象 和 数值运算, 则数值会和 Series对象的每个值进行具体的运算. 
series_age + 100
series_age * 2
#%%
# 场景2: Series对象 和 Series对象运算, 会优先参考 索引列运算, 即: 索引值相同的进行计算, 不同的用NAN(空值)填充.
series_age + series_age
#%%
series_age.sort_index(ascending=False) + series_age
#%%
series_age + pd.Series([1, 2, 3])
series_age + pd.Series([1, 2, 3], index=['a', 'b', 'c'])

http://www.kler.cn/a/398841.html

相关文章:

  • Jenkins的pipeline Script的 每个组件的详细讲解
  • 【STM32】MPU6050简介
  • Day18 Nim游戏
  • 数据结构-哈夫曼树
  • Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)
  • Go八股(Ⅵ)Goroutine 以及其中的锁和思想
  • 阿里斑马智行 2025届秋招 NLP算法工程师
  • The Internals of PostgreSQL 翻译版 持续更新...
  • Java语言在医疗健康小程序开发中的应用研究
  • 机器学习周报(11.11-11.17)
  • 力扣-2175、世界排名的变化
  • mybatis 动态SQL语句
  • CSS预编译器:让样式编写更高效的秘密武器(6)
  • 何为Jenkins
  • React中组件通信的几种方式
  • 微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
  • 华为云stack网络服务流量走向
  • 基于Hadoop、hive的数仓搭建实践
  • VUE+SPRINGBOOT实现邮箱注册、重置密码、登录功能
  • react17安装html-react-parser运行报错记录
  • Android Framework PMS面试题及参考答案
  • 【AI图像生成网站Golang】项目架构
  • 电脑长期不用,开不了机怎样解决
  • 【FFmpeg系列】:音频处理
  • 蓝队知识浅谈(上)
  • Sqlserver 操作大数据量表,具体操作时间和服务器的配置等都有关系