Python进阶复习-Pandas库

2023-09-21 15:04:57

使用场合

  • Pandas库是基于Numpy库建立的
  • 为数据添加标签、处理缺失值、分组和透视表方面Pandas更高效

对象创建

Series对象

  • Series 是带标签的【默认是从0开始的数字】一维数据结构,类似于字典,可以用来表示一列数据。
import pandas as pd
# 创建 Series 对象  
s = pd.Series([1, 2, 3, 4, 5])  
print(s)
0    1
1    2
2    3
3    4
4    5
dtype: int64

DataFrame对象

  • DataFrame 是带标签的多维数据结构,类似于表格,可以用来表示多列数据。
# 创建 DataFrame 对象  
df = pd.DataFrame({'列 1': [1, 2, 3, 4, 5], '列 2': [6, 7, 8, 9, 10]})  
print(df)
12
0    1    6
1    2    7
2    3    8
3    4    9
4    5   10
  • 属性
  1. index: DataFrame的行索引。
  2. columns: DataFrame的列索引。
  3. dtypes: DataFrame 的数据类型。
  4. shape: DataFrame的行数和列数,返回一个元组 (rows, columns)。
  5. size: DataFrame的行数和列数的乘积,返回一个整数。
  6. values:返回 DataFrame 的全部数据,不包括索引。
  7. iterrows():返回一个迭代器,可以遍历 DataFrame 的每一行。
  8. itertuples():返回一个迭代器,可以遍历 DataFrame 的所有元组。
  9. apply():对 DataFrame 的每一列应用一个函数。
  10. agg():对 DataFrame 的每一列应用一个函数,返回一个新的 DataFrame。

Numpy与DataFrame

import numpy as np
import pandas as pd
arr = np.array([[1, 2, 3], [4, 5, 6]])  
df = pd.DataFrame(arr,index=["hang","zhou"],columns=["lie","zhou","ya"]) 
print(df) 
      lie  zhou  ya
hang    1     2   3
zhou    4     5   6

处理缺失值

  1. 删除缺失值:使用dropna()函数,可以删除包含缺失值的行或列。例如:
import pandas as pd

data = {'A': [1, 2, None, 4], 'B': [None, 2, 3, 4]}  
df = pd.DataFrame(data)

# 删除包含缺失值的行  
df_no_na = df.dropna()

# 删除包含缺失值的列  
df_no_na = df.dropna(axis=1)  
  1. 填充缺失值:使用fillna()函数,可以填充缺失值。可以使用指定的值、前一个值、后一个值、均值、中位数等方法。例如:
import pandas as pd

data = {'A': [1, 2, None, 4], 'B': [None, 2, 3, 4]}  
df = pd.DataFrame(data)

# 使用指定的值填充缺失值  
df_filled = df.fillna(value=0)

# 使用前一个值填充缺失值  
df_filled = df.fillna(method='ffill')

# 使用后一个值填充缺失值  
df_filled = df.fillna(method='bfill')

# 使用均值填充缺失值  
df_filled = df.fillna(method='mean')  

分组

groupby() 函数

import pandas as pd

# 创建一个 dataframe 对象  
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'A'],  
        'Value': [10, 20, 30, 40, 50, 60, 70, 80]}  
df = pd.DataFrame(data)

# 使用 groupby() 函数进行分组  
grouped = df.groupby('Category')

# 查看分组结果  
for name, group in grouped:  
    print(name)  
    print(group)  
A
  Category  Value
0        A     10
2        A     30
4        A     50
6        A     70
7        A     80
B
  Category  Value
1        B     20
3        B     40
5        B     60

apply()函数

  • pandas 库的 apply() 函数用于对 DataFrame 或 Series 对象进行逐行或逐列的操作。它接受一个函数作为参数,并将该函数应用于对象的每个元素。apply 函数可以用于执行数据转换、计算、过滤等操作。
import pandas as pd

# 创建一个 DataFrame  
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}  
df = pd.DataFrame(data)

# 定义一个函数,用于将每个元素乘以 2  
def multiply_by_2(x):  
    return x * 2

# 使用 apply 函数  
result = df.apply(multiply_by_2)

print(result)  

执行结果:

   A   B  
0  2  10  
1  4  12  
2  6  14  
3  8  16  

透视表

  • Pandas的透视表主要用于数据汇总和分析。当需要对大量数据进行快速汇总和分析时,可以使用透视表来完成。透视表可以将数据按照不同的维度进行分组,并计算每个分组的聚合数据,例如求和、平均值、计数等。
import pandas as pd

# 创建一个数据框  
data = {'A': [1, 2, 3, 4, 5],  
        'B': [10, 20, 30, 40, 50],  
        'C': [100, 200, 300, 400, 500]}  
df = pd.DataFrame(data)

# 创建透视表  
pivot_table = pd.pivot_table(df, values='C', index='A', columns='B', aggfunc='sum')

print(pivot_table)  

输出:

         B    sum  
A            
1        10  1100  
2        20  2100  
3        30  3100  
4        40  4100  
5        50  5100  
更多推荐

Zookeeper集群 + Kafka集群

目录1、Zookeeper1.1Zookeeper概述1.1.1Zookeeper定义1.1.2Zookeeper工作机制1.1.3Zookeeper特点1.1.4Zookeeper数据结构1.1.5Zookeeper应用场景1.2Zookeeper选举机制1.3部署Zookeeper集群1.3.1安装前准备1.3.2

肖sir___环境的讲解详情__002

一、环境讲解1、jdk什么是JDK?JDK的作用?JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。包含了各种类库和工具,机器不是直接识别语言的,会借助工具的编译器,可以理解为翻译官,将一门语言翻译为机器可以识别的语言,Jdk能对Java进行编译,我们的工具

人机合作的有效性、安全性和可信度

确定人机协同中权力归属的原则和方法可以根据具体情境和任务的要求进行灵活选择。以下是一些常见的方法:专业领域授权:在专业领域中,权力可能更多地授予具有相关知识和经验的人类专家。他们能够理解和分析复杂的情况,并基于其专业判断做出决策。机器可以作为工具或辅助手段,提供数据分析、模型预测等支持。分工合作:根据任务的不同阶段或特

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。二、企业通过

【JavaScript】video标签配置及相关事件:

文章目录一、标签配置:二、事件:三、案例:一、标签配置:标签名描述src要播放的路径地址autoplay是否自动播放,默认值是false,(Boolean)loop是否循环播放,默认值是false,(Boolean)muted是否静音播放,默认值是false,(Boolean)initial-time制定和视频初始播放

线性代数的本质(八)——内积空间

文章目录内积空间内积空间正交矩阵与正交变换正交投影施密特正交化实对称矩阵的对角化内积空间内积空间三维几何空间是线性空间的一个重要例子,如果分析一下三维几何空间,我们就会发现它还具有一般线性空间不具备的重要性质:三维几何空间中向量有长度和夹角,这称为三维几何空间的度量性质。现在,我们在一般线性空间中引入度量有关的概念。我

【面试刷题】——Qt使用的编译器

Qt可以使用多种不同的编译器,具体取决于你的开发环境和目标平台。以下是一些常见的Qt支持的编译器:MinGW:MinGW(MinimalistGNUforWindows)是Windows下的一个轻量级开发工具集,通常与Qt一起使用来开发Windows应用程序。Qt的官方发行版通常包括了MinGW编译器,以便在Windo

关于Qt适配不同分辨率和缩放率时可能遇到的问题和解决方案

如果没有特殊的处理,Qt的UI窗口在不同的分辨率和缩放率下,其显示效果可能会出现问题,常见的有:子控件堆叠,无法显示完整窗口尺寸变大,超出屏幕的显示范围控件变形,长宽比不合理界面模糊字体变大,控件尺寸却没有变化有两种方式可以对UI界面进行良好的缩放:Qt不做任何事情,由windows系统负责缩放windows系统不做任

Qt5开发及实例V2.0-第一章Qt概述及Qt5的安装

Qt5开发及实例V2.0-第一章-Qt概述及Qt5的安装第一章-Qt概述1.1什么是Qt1.2Qt5的安装1.2.1下载安装Qt51.2.2运行Qt5Creator1.2.3Qt5开发环境1.3Qt5开发步骤及实例1.3.1设计器Qt5Designer实现1.3.2代码实现简单实例L1.2Qt5安装:概念解析L1.3Q

kafka 3.5 生产者请求中的acks,在服务端如何处理源码

一、生产者客户端配置参数acks说明1、acks=12、acks=03、acks=-1二、请求在写入Leader的数据管道之前,则会验证Leader的ISR副本数量和配置中的最小ISR数量1、Leader的ISR小于配置文件中minInSyncReplicas,并且acks=-1,则抛异常2、如果acks不等于-1,则

排序算法-----计数排序

目录前言:计数排序1.算法描述2.基本思想3.实现逻辑4.示例剖析5.动图演示代码实现1.C/C++代码2.Python代码算法分析时间复杂度空间复杂度稳定性局限性前言:有没有一种排序时间复杂度为直线正比的排序算法呢?有当然有,那就是计数排序,那为什么时间复杂度如此小的排序算法,然而其排序速度却不如快速排序(nlogn

热文推荐