首页 > 其他分享 >pandas模块

pandas模块

时间:2024-05-29 18:55:13浏览次数:23  
标签:df Series DataFrame ---- 模块 import pandas

为什么要学习pandas?

  • numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?
    • numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据

什么是pandas?

  • 首先先来认识pandas中的两个常用的类
    • Series
    • DataFrame

Series

  • Series是一种类似与一维数组的对象,由下面两个部分组成:

    • values:一组数据(ndarray类型)
    • index:相关的数据索引标签
  • Series的创建

    • 由列表或numpy数组创建
    • 由字典创建
    from pandas import Series
    s = Series(data=[1,2,3,'four]) # 创建一个有索引的数据
    s
    代码结果:
    0       1
    1       2
    2       3
    3    four
    dtype: object
    
    import numpy as np
    s = Series(data = np.random.randint(0,100,size=(3,))) # 使用numpy模块和pandas模块中的Series类,创建一个3行0列的简单表格
    s
    代码结果:
    0     3
    1    43
    2    82
    dtype: int64
    
    from pandas import Series
    s = Series(data=[1,2,3,'four'],index=['a','b','c','d']) # 创建一个表格,行索引是a,b,c,d 对应的值是data中的元素
    s
    代码结果:
    a       1
    b       2
    c       3
    d    four
    dtype: object
    
  • 为什么需要有显示索引

    • 显示索引可以增强Series的可读性

      form pandas import Series
      dic ={
        '语文':100,
        '数学':120,
        '英语':125,
      }
      s = Series(data=dic)
      s
      代码结果:
      语文    100
      数学     99
      理综    250
      dtype: int64
      
  • Series的索引和切片

    from pandas import Series
    dic = {
      '语文':100,
      '数学':120,
      '英语':125
    }
    s = Series(data=dic)
    s
    代码结果:
    语文    100
    数学    120
    理综    125
    dtype: int64
    
    s[0] # 取出索引为0,第一行语文的数据
    s.语文 # 直接取出语文这一行的数据
    s.[0:2] # 取出索引0-2的数据,就是语文、数学这两行
    
  • Series的常用属性

    • s.shape 显示元素的行数
    • s.size 显示元素的个数,索引
    • s.index 元素的列索引
    • s.values 返回值
    • s.dtype 元素的类型
  • Series的常用方法

    • head(),tail()

    • unique()

    • isnull(),notnull()

    • add() sub() mul() div()

      import numpy as np
      from pandas import Series
      s = Series(data = np.random.randint(1,100),size=(4,))
      
      代码结果:
      0    12
      1    51
      2    50
      3    96
      dtype: int32
      
      s.head(2) # 显示前2行的数据
      代码结果:
      0    12
      1    51
      dtype: int32
      
      s.tail(2) # 显示后3个数据
      代码结果:
      0    12
      1    51
      dtype: int32
      
      s.unique() # 去重
      代码结果:
      array([12, 51, 50, 96])
      
      s.isnull() # 用于判断每一个元素是否为空,为空返回True,否则返回False
      代码结果:
      0    False
      1    False
      2    False
      3    False
      dtype: bool
      
      s.notnull() 
      代码结果:
      0    False
      1    False
      2    False
      3    False
      dtype: bool
      
      
      

DataFrame

  • DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values
  • DataFrame的创建

    • ndarray创建
    • 字典创建
    from pandas import DataFrame
    df = DataFrame(data=([1,2,3],[1,2,3])) 创建一个二维的表格
    df
    代码结果:
    | 0    | 1    | 2    |
    | ---- | ---- | ---- |
    | 0    | 1    | 2    |
    | 1    | 1    | 2    |
    
    from pandas import DataFrame
    import numpy as np
    df = DataFrame(data=np.random.randint(1,100,size=(3,4)))
    df
    代码结果:
    | 0    | 1    | 2    | 3    |
    | ---- | ---- | ---- | ---- |
    | 0    | 9    | 68   | 39   |
    | 1    | 86   | 83   | 53   |
    | 2    | 68   | 82   | 80   |
    
    
    import numpy as np
    from pandas import DataFrame
    dic = {
        'name':['zt','cy','xcy'],
        'salary':[1000,2000,3000]
    }
    
    df = DataFrame(data=dic,index=['a','b','c'])
    df
    代码结果:
    | -----|  name  | salary |
    | ---- | ------ |  ----- |
    | a    | zt     |  1000  |
    | b    | cy     |  2000  |
    | c    | xcy    |  3000  |
    
  • DataFrame的属性

    • values、columns、index、shape

      • df.values:

           array([['zt', 1000],
                  ['cy', 2000],
                  ['xcy', 3000]], dtype=object)
        
      • df.columns:

           Index(['name', 'salary'], dtype='object')
        
      • df.index:

               Index(['a', 'b', 'c'], dtype='object')
        
         </details>
        
      • df.shape:

      (3, 2)
      
    • 练习:
      根据以下考试成绩表,创建一个DataFrame,命名为df:

          张三  李四  
      语文 150  0
      数学 150  0
      英语 150  0
      理综 300  0
      
       import numpy as np
       from pandas import DataFrame
       dic = {
           '张三':[150,150,150,150],
           '李四':[0,0,0,0],
       }
       df = DataFrame(data=dic,index=['语文','数学','英语','理综'])
       df
      
  • DataFrame索引操作

    • 对行进行索引
        import numpy as np
        from pandas import DataFrame
        df = DataFrame(data = np.random.randint(1,100,size=(4,5)),index=['a','b','c','d'])
        df
      
        代码结果:
        | 0    | 1    | 2    | 3    | 4    |
        | ---- | ---- | ---- | ---- | ---- |
        | a    | 72   | 4    | 35   | 97   |
        | b    | 53   | 36   | 4    | 75   |
        | c    | 65   | 35   | 25   | 55   |
        | d    | 8    | 68   | 52   | 33   |
      
    • 对列进行索引
        import numpy as np
        from pandas import DataFrame
        df = DataFrame(data = np.random.randint(1,100,size=(9,5)),columns=['a','b','c','d','e'])
        df
      
        代码结果:
        | a    | b    | c    | d    | e    |
        | ---- | ---- | ---- | ---- | ---- |
        | 0    | 87   | 35   | 75   | 10   |
        | 1    | 12   | 83   | 11   | 14   |
        | 2    | 57   | 8    | 62   | 99   |
        | 3    | 29   | 55   | 96   | 37   |
        | 4    | 66   | 65   | 1    | 94   |
        | 5    | 32   | 54   | 17   | 75   |
        | 6    | 48   | 26   | 65   | 46   |
        | 7    | 3    | 6    | 10   | 14   |
        | 8    | 14   | 26   | 32   | 96   |
      
    • 对元素进行索引
      df['a'] # 取单列,如果df有显示的索引,通过索引机制去行或者列的时候只可以使用显示索引
      df[['a','c']] # 取多列
      
      iloc:
          # 通过隐式索引取行
      loc:
          # 通过显示索引取行
      
      df.loc[0] # 取单行
      df.iloc[[0,3,5]] # 取多行
      
      #取单个元素
      df.iloc[0,2]
      df.loc[0,'a']
      
      #取多个元素
      df.iloc[[1,3,5],2]
      
  • DataFrame的切片操作

    • 对行进行切片

      | a    | b    | c    | d    |
      | ---- | ---- | ---- | ---- |
      | 0    | 95   | 87   | 83   |
      | 1    | 76   | 82   | 78   |
      | 2    | 69   | 94   | 89   |
      | 3    | 74   | 77   | 93   |
      | 4    | 75   | 88   | 93   |
      | 5    | 67   | 98   | 66   |
      | 6    | 95   | 83   | 71   |
      | 7    | 72   | 74   | 79   |
       
      df[0:2] # 切行
      代码结果:
      | a    | b    | c    | d    |
      | ---- | ---- | ---- | ---- |
      | 0    | 95   | 87   | 83   |
      | 1    | 76   | 82   | 78   |
      
      
      df.iloc[:,0:2] # 切列
      代码结果:
      | a    | b    |
      | ---- | ---- |
      | 0    | 95   |
      | 1    | 76   |
      | 2    | 69   |
      | 3    | 74   |
      | 4    | 75   |
      | 5    | 67   |
      | 6    | 95   |
      | 7    | 72   |
      
    • 对列进行切片

      df.iloc[:,0:2] # 切列
      代码结果:
      | a    | b    |
      | ---- | ---- |
      | 0    | 95   |
      | 1    | 76   |
      | 2    | 69   |
      | 3    | 74   |
      | 4    | 75   |
      | 5    | 67   |
      | 6    | 95   |
      | 7    | 72   |
      
  • 总结:df索引和切片操作

    • 索引:
      • df[col]:取列
      • df.loc[index]:取行
      • df.iloc[index,col]:取元素
    • 切片:
      • df[index1:index3]:切行
      • df.iloc[:,col1:col3]:切列
  • 练习题:

    1. 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
    import numpy as np
    from pandas import DataFrame
    dic1 ={
        '张三':[150,150,150,150],
        '李四':[0,0,0,0]
    }
    dic2={
        '张三':[120,120,120,120],
        '李四':[15,15,15,15]
    }
    ddd = DataFrame(data=dic1,index=['语文','数学','英语','理综'])
    ddd2 = DataFrame(data=dic2,index=['语文','数学','英语','理综'])
    (ddd + ddd2) / 2  # 其中期末的平均值
    
    代码结果:
    | 张三   | 李四    |
    |  ---- | ----- |
    | 语文   | 135.0 |
    | 数学   | 135.0 |
    | 英语   | 135.0 |
    | 理综   | 135.0 |
    
    
    2. 假设张三期中考试数学被发现作弊,要记为0分,如何实现?
    dd.loc['数学','张三'] = 0
    ddd
    
    代码结果:
    | 张三   | 李四   |
    | ---- | ---- |
    | 语文   | 150  |
    | 数学   | 0    |
    | 英语   | 150  |
    | 理综   | 150  |
    
    3. 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
    ddd['李四'] += 100
    ddd
    
    代码结果:
    | 张三   | 李四   |
    | ---- | ---- |
    | 语文   | 150  |
    | 数学   | 0    |
    | 英语   | 150  |
    | 理综   | 150  |
    
    4. 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
    ddd += 10
    ddd
    
    代码结果:
    | 张三   | 李四   |
    | ---- | ---- |
    | 语文   | 160  |
    | 数学   | 10   |
    | 英语   | 160  |
    | 理综   | 160  |
    
  • 拓展:时间数据类型的转换

    • pd.to_datetime(col)
  • 将某一列设置为行索引

    • df.set_index()
    dic = {
        'time':['2010-10-10','2011-11-20','2020-01-10'],
        'temp':[33,31,30]
    }
    df = DataFrame(data=dic)
    df
    
    |      | time       | temp  | 
    | ---- | ---------- |       |
    | 0    | 2010-10-10 |  33   |
    | 1    | 2011-11-20 |  31   |
    | 2    | 2020-01-10 |  30   |
    
    #查看time列的类型
    df['time'].dtype
    dtype('O')
    
    
    import pandas as pd
    #将time列的数据类型转换成时间序列类型
    df['time'] = pd.to_datetime(df['time'])
    df['time']
    
    #将time列作为源数据的行索引
    df.set_index('time',inplace=True)
    
    

标签:df,Series,DataFrame,----,模块,import,pandas
From: https://www.cnblogs.com/Tmars/p/18219113

相关文章

  • BOSHIDA AC/DC电源模块:可靠持久的能源供应
    BOSHIDAAC/DC电源模块:可靠持久的能源供应AC/DC电源模块是一种被广泛应用于工业、通信、医疗等领域的电源设备。其可靠持久的能源供应能够保证设备的正常运行和稳定性能,具有重要的意义。在本文中,我们将详细介绍AC/DC电源模块的特点和优势。 AC/DC电源模块是一种将交流电转化......
  • 一款交流220V转直流3.3V蓝牙WIFI模块单片机供电的非隔离芯片WT5107
    一款交流220V转直流3.3V蓝牙WIFI模块单片机供电的非隔离芯片WT5107WT5107是一种高性能和高精度的非隔离降压开关电源恒压控制驱动芯片,适用于220VAC或全电压范围输入。它特别适合于小家电和白色家电等设备的电源,固定输出为3.3V。该芯片内部集成了高压MOS功率管,采用恒压控制模式,可......
  • ESP8266模块上传温湿度传感器的数据到云平台(乐为物联)
    ESP8266相关AT指令AT:检测模块是否正常工作,返回“OK”表示正常。AT+RST:重启模块。AT+CWMODE=:设置Wi-Fi模式,可以是以下几种:1:Station模式,连接到一个Wi-Fi网络。2:SoftAP模式,创建一个Wi-Fi热点。3:SoftAP+Station模式,同时作为热点和连接到一个Wi-Fi网络。AT+CWJAP="",""......
  • 4 SAP前台操作手册-MM模块-采购管理-采购申请创建、修改、显示-ME51N ME52N ME53N
    0总体说明SAP实施项目中,到了第3个阶段-系统实现,在这个阶段,因为蓝图汇报已经结束,配置也差不多完成了,自开发还在进行中,SAP标准功能下,可以进行基础业务的前台操作了,在实现阶段的尾端,客户指定的关键用户(俗称KU-KeyUser)会进行前台业务操作和练习,提高熟练程度,同时需要在外部SAP顾......
  • 2 SAP前台操作手册-MM模块-采购管理-(标准/委外/寄售)采购信息记录创建、修改、显示、
    0总体说明SAP实施项目中,到了第3个阶段-系统实现,在这个阶段,因为蓝图汇报已经结束,配置也差不多完成了,自开发还在进行中,SAP标准功能下,可以进行基础业务的前台操作了,在实现阶段的尾端,客户指定的关键用户(俗称KU-KeyUser)会进行前台业务操作和练习,提高熟练程度,同时需要在外部SAP顾......
  • 虚拟机系列:虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。 模块“Upgra
    虚拟机使用的是此版本VMwareWorkstation不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。虚拟机使用的是此版本VMwareWorkstation不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。虚拟机使用的是此版本VMwareWorkstation不......
  • pandas解析csv
    前提:pipinstallpandas 总结:用DataFrame接收二维数组,用Series接收一维数组。DataFrame[列名]=Series列的内容。 importpandasaspd...defreadCSV(self):file=""data=pd.read_csv(file,encoding='utf-8')#DataFrame用来接收二维数组(矩阵)......
  • 删除不必要的内核模块
    目录一.系统环境二.前言三.内核模块简介四.删除不必要的内核模块五.总结一.系统环境本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu18.04。服务器版本docker软件版本Kubernetes(k8s)集群版本kube-bench版本CPU架构Ubuntu18.04.5LTSDockerversion20.10.1......
  • 配置模块
    概述什么是配置?chatGPT是这么回答的:配置项(ConfigurationItem)是一个广泛使用的术语,尤其在软件开发、系统管理和IT服务管理中。它通常指的是系统或应用程序中的一个可配置的元素,可以用来调整系统或应用的行为、性能或其他特性。配置项可以是软件、硬件、文档、数据库、参数设置等......
  • BOSHIDA AC/DC电源模块:满足符合特定要求的电源需求
    BOSHIDAAC/DC电源模块:满足符合特定要求的电源需求AC/DC电源模块是一种电源转换器,用于将交流电转换为直流电,以满足符合特定要求的电源需求。这些电源模块常用于各类电子设备,如计算机、通信设备、工业设备和医疗设备等。它们的主要功能是将输入电源的电压和电流进行稳定和调整,以提......