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

pandas库

目录

一.Pandas库的核心特点与应用场景

1.表格数据处理

2.与NumPy的区别

3.数据转换

二.Pandas与OpenPyXl的对比

三.DataFrame与Series数据类型

四.DataFrame常用操作

排序:df.sort_values(by='列名', ascending=False)按指定列降序排序,整行数据同步调整,当参数值为ture时则为升序排序或默认升序排序

数据替换:df['列名'].replace({'旧值':'新值'})实现值替换,需注意代码换行可能引起的误解。

数据访问:

删除数据:df.drop('行名', inplace=True)默认直接删除指定行,也可以通过axis=" "参数改变值为0时删除指定行,值为1时则删除指定列;inplace=True时覆盖原变量生效为False则不会改变原来的数据而是生成一个副本;

内容修改:直接赋值(如df['列名'] = 新值)可更新数据。

添加列:

添加行:通过指定行名和列名添加

五.pandas库读取不同类型的文件


一.Pandas库的核心特点与应用场景

1.表格数据处理

Pandas的核心功能是将数据以表格形式(DataFrame)处理,支持列名、行索引等结构化操作,适用于金融、股票等领域的Excel数据分析。

2.与NumPy的区别

NumPy仅支持数值类型数据,而Pandas支持字符串、列表等多种数据类型
Pandas底层基于NumPy实现,但功能更丰富(如数据读取、转换、计算等)。

3.数据转换

Pandas表格数据(数值类型)可直接转换为NumPy数组,两者可互相转化。

二.Pandas与OpenPyXl的对比

  • Pandas:专注于数据存储、计算和分析,类似NumPy与OpenPyXL的结合体。
  • OpenPyXL:模拟Excel操作(公式、绘图等),功能更偏向文件操作而非数据分析。

三.DataFrame与Series数据类型

  • DataFrame:二维表格数据,包含行索引(index)和列名(columns),可通过字典形式创建(键为列名,值为数据)。"DataFrame(数据框)就是excel表(多个Series的拼接)"
    import pandas as pd
    df_1 = pd.DataFrame({'age':[10,20,30],'name':['tim','john','rose'],'income':[100,200,300]},index=['person1','person2','person3'])
    print(df_1)age  name  income
    person1   10   tim     100
    person2   20  john     200
    person3   30  rose     300

  • Series:一维表格数据,用于处理单列/行数据,支持自定义索引(index)。
    #生成第一个Series[按照默认的index]
    s_1 = pd.Series([1,2,3,4,5])
    print(s_1)0    1
    1    2
    2    3
    3    4
    4    5
    dtype: int64
    #自定义index
    s_2 = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e'])
    print(s_2)a    1
    b    2
    c    3
    d    4
    e    5
    dtype: int64

  • 属性:两者共有values(数据值)、index(行索引)、columns(列名)等属性

四.DataFrame常用操作

  • 排序df.sort_values(by='列名', ascending=False)按指定列降序排序,整行数据同步调整,当参数值为ture时则为升序排序或默认升序排序

    import pandas as pd
    dic={'name':['jack','marry','john','tom'],'age':[13,45,67,23],'gender':['f','f','m','m']}
    df=pd.DataFrame(dic)
    print(df)name  age gender
    0   jack   13      f
    1  marry   45      f
    2   john   67      m
    3    tom   23      m# 根据年龄这一列进行排序(升序和降序)
    df=df.sort_values(by=['age'])
    print(df)name  age gender
    0   jack   13      f
    3    tom   23      m
    1  marry   45      f
    2   john   67      mdf=df.sort_values(by=['age'],ascending=False)
    print(df)name  age gender
    2   john   67      m
    1  marry   45      f
    3    tom   23      m
    0   jack   13      f

  • 数据替换df['列名'].replace({'旧值':'新值'})实现值替换,需注意代码换行可能引起的误解。

    # 值替换
    df['gender'] =df['gender'].replace(['m','f'],['male','female'])
    print(df)name  age  gender
    2   john   67    male
    1  marry   45  female
    3    tom   23    male
    0   jack   13  female
    

  • 数据访问

    • 通过行列索引或位置序号访问数据,df.loc()方法通过行名和列名定位数据,df.iloc()方法通过位置序号定位数据
    • 支持切片(如a:d)和离散选择(如['a','d'])。
      import pandas as pd
      import numpy as npdatas=pd.date_range('20180101',periods=5)#产生一个时间数据,五个
      df=pd.DataFrame(np.arange(30).reshape(5,6),index=datas,columns=['A','B','C','D','E','F']
      )A   B   C   D   E   F
      2018-01-01   0   1   2   3   4   5
      2018-01-02   6   7   8   9  10  11
      2018-01-03  12  13  14  15  16  17
      2018-01-04  18  19  20  21  22  23
      2018-01-05  24  25  26  27  28  29# 打印某个值
      print(df.loc['20180103','B'])  
      13# 打印某列值
      print(df.loc[:,'B'])
      2018-01-01     1
      2018-01-02     7
      2018-01-03    13
      2018-01-04    19
      2018-01-05    25print(df.loc['20180103':,'B'])
      2018-01-03    13
      2018-01-04    19
      2018-01-05    25print(df.loc['20180103':,['B',"D"]])B   D
      2018-01-03  13  15
      2018-01-04  19  21
      2018-01-05  25  27# 打印某行值
      print(df.loc['20180103',:])
      A    12
      B    13
      C    14
      D    15
      E    16
      F    17# 打印某些行
      print(df.loc['20180103':,:])A   B   C   D   E   F
      2018-01-03  12  13  14  15  16  17
      2018-01-04  18  19  20  21  22  23
      2018-01-05  24  25  26  27  28  29# 获取某个数据
      print(df.iloc[1,2])
      8# 获取某列
      print(df.iloc[:,2])
      2018-01-01     2
      2018-01-02     8
      2018-01-03    14
      2018-01-04    20
      2018-01-05    26#获取某几列
      print(df.iloc[:,2:])C   D   E   F
      2018-01-01   2   3   4   5
      2018-01-02   8   9  10  11
      2018-01-03  14  15  16  17
      2018-01-04  20  21  22  23
      2018-01-05  26  27  28  29print(df.iloc[:,[2,3]])C   D
      2018-01-01   2   3
      2018-01-02   8   9
      2018-01-03  14  15
      2018-01-04  20  21
      2018-01-05  26  27
      # 获取某行
      print(df.iloc[2,:])
      A    12
      B    13
      C    14
      D    15
      E    16
      F    17# 获取某些行
      print(df.iloc[2:,])A   B   C   D   E   F
      2018-01-03  12  13  14  15  16  17
      2018-01-04  18  19  20  21  22  23
      2018-01-05  24  25  26  27  28  29

  • 删除数据df.drop('行名', inplace=True)默认直接删除指定行,也可以通过axis=" "参数改变值为0时删除指定行,值为1时则删除指定列;inplace=True时覆盖原变量生效为False则不会改变原来的数据而是生成一个副本;

        删除列:del df['列名'] 或 df.drop('列名', axis=1, inplace=True)

        删除行:df.drop('行名', axis=0, inplace=True)

  • import pandas as pd
    df = pd.DataFrame({'age':[10,10,12],'name':['tom','rose','jack'],'income':[100,200,300]},index=['person1','person2','person3'])
    print(df)age  name  income
    person1   10   tom     100
    person2   10  rose     200
    person3   12  jack     300# 删除
    # 直接在原数据上删除
    del df['age']
    print(df)name  income
    person1   tom     100
    person2  rose     200
    person3  jack     300# 删除列
    data = df.drop('name',axis=1,inplace=False)
    print(data)income
    person1     100
    person2     200
    person3     300# 删除行
    df.drop('person1',axis=0,inplace=False)name  income
    person2  rose     200
    person3  jack     300

  • 内容修改:直接赋值(如df['列名'] = 新值)可更新数据。

  • 添加列

    import pandas as pd
    df = pd.DataFrame({'age':[10,10,12],'name':['tom','rose','jack'],'income':[100,200,300]},index=['person1','person2','person3'])
    print(df)age  name  income
    person1   10   tom     100
    person2   10  rose     200
    person3   12  jack     300# 在最后增加一列
    df['pay']=[20,30,40]
    print(df)age  name  income  pay
    person1   10   tom     100   20
    person2   10  rose     200   30
    person3   12  jack     300   40

  • 添加行:通过指定行名和列名添加

    df.loc['person4',['age','name','income']]=[20,'kitty',200]
    print(df)age   name  income   pay
    person1  10.0    tom   100.0  20.0
    person2  10.0   rose   200.0  30.0
    person3  12.0   jack   300.0  40.0
    person4  20.0  kitty   200.0   NaN

                                                                                                                                                         

五.pandas库读取不同类型的文件

import pandas as pd
#读取csv文件
df_1=pd.read_csv("")df_2=pd.read_csv("",encoding='utf-8',header=None)# 读取excel文件
df_3=pd.read_excel("")# 读取txt文件
df_4=pd.read_table("",sep='',header=None)

http://www.dtcms.com/a/295090.html

相关文章:

  • 18-设备虚拟化IRF
  • 题单【函数与结构体】
  • c++--面向对象封装--实践
  • window下c++共享内存,进程互斥锁。
  • 前端跨域请求原理及实践
  • 一二章笔记总结
  • CSP-J系列【2024】P11229 [CSP-J 2024] 小木棍题解
  • 1688官方跨境寻源通API接口调用实战
  • LLM指纹底层技术——混合专家模型
  • CSP-J系列【2023】P9750 [CSP-J 2023] 一元二次方程题解
  • SSH 一键互信配置脚本 V2.0 使用指南
  • 卡尔曼滤波数据融合
  • AI 及开发领域动态与资源汇总(2025年7月23日)
  • 【LeetCode】算法详解#9 ---旋转图像
  • QT开发---基础介绍及环境搭建
  • STM32中SystemCoreClockUpdate函数解读
  • 双写缓冲区 Redo Log
  • 基于GitHub的Terraform自动化管理最佳实践
  • 多服务器批量发布软件
  • Linux编程:9、线程编程-互斥锁与条件变量
  • 扫地机产品的电池CQC认证遵循哪个标准?
  • 1. 一份“从 0 到 1” 的 WSL(Windows Subsystem for Linux)速查手册
  • J2EE模式---视图助手模式
  • ospf多区域
  • git的使用,推送仓库github
  • Hierarchical-Localization 安装与常见问题解决手册
  • MSTP多生成树协议
  • 【西北工业大学公开课】导引系统原理(全61讲)周军 -个人笔记版 5000字
  • 基于多种机器学习的水质污染及安全预测分析系统的设计与实现【随机森林、XGBoost、LightGBM、SMOTE、贝叶斯优化】
  • Parasoft为金融服务打造统一测试平台,提升安全、合规与交付效率