首页 > 其他分享 >Pandas全面指南:数据加载、处理技巧与高级数据选择过滤方法

Pandas全面指南:数据加载、处理技巧与高级数据选择过滤方法

时间:2024-06-23 15:58:49浏览次数:21  
标签:name df 方法 column 数据 Pandas 加载

Pandas全面指南:数据加载、处理技巧与高级数据选择过滤方法

Pandas是Python中一个强大的数据分析库,它提供了快速、灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的工作既简单又直观。Pandas主要的数据结构有Series(一维标签数组)和DataFrame(二维标签数据结构)。

在本文中,我们将介绍Pandas的一些基本和高级用法,包括数据加载、数据处理、数据选择和过滤等。

一、数据加载

Pandas提供了多种加载数据的方式,如从CSV、Excel、SQL数据库、JSON等格式中读取数据。

1. 从CSV文件加载数据

import pandas as pd

# 从CSV文件加载数据
df = pd.read_csv('data.csv')

# 显示前几行数据
print(df.head())

2. 从Excel文件加载数据

# 注意:需要安装xlrd或openpyxl库来支持Excel文件的读取
df = pd.read_excel('data.xlsx')
print(df.head())

二、数据处理

1. 数据清洗

Pandas提供了多种方法用于数据清洗,如处理缺失值、删除重复行等。

处理缺失值
# 查找缺失值
print(df.isnull())

# 替换缺失值
df.fillna(value=0, inplace=True)  # 使用0替换缺失值

# 删除包含缺失值的行或列
df.dropna(inplace=True)  # 删除所有包含缺失值的行
删除重复行
# 删除重复的行,保留第一个出现的
df.drop_duplicates(inplace=True)

2. 数据转换

Pandas允许你轻松地对数据进行转换,如重命名列名、转换数据类型等。

重命名列名
# 使用rename方法重命名列名
df = df.rename(columns={'old_name': 'new_name'})
转换数据类型
# 假设我们有一个名为'age'的列,它的数据类型是字符串,我们想要将其转换为整数
df['age'] = pd.to_numeric(df['age'], errors='coerce')  # 使用coerce参数将无法转换的值设置为NaN

3. 数据选择

Pandas提供了多种选择数据的方法,如基于标签、位置或条件的选择。

基于标签选择
# 选择名为'column_name'的列
column = df['column_name']

# 选择多列
subset = df[['column1', 'column2']]
基于位置选择
# 使用iloc方法基于整数位置选择数据
# 选择第一行
row = df.iloc[0]

# 选择前两行和三列(不包括第四列)
subset = df.iloc[:2, :3]
基于条件选择
# 选择'age'列大于30的行
filtered_df = df[df['age'] > 30]

4. 数据排序

Pandas允许你根据一列或多列对数据进行排序。

# 根据'column_name'列进行升序排序
sorted_df = df.sort_values(by='column_name')

# 根据多列进行排序(先按'column1'升序,然后按'column2'降序)
sorted_df = df.sort_values(by=['column1', 'column2'], ascending=[True, False])

5. 数据分组与聚合

Pandas的groupby方法允许你根据一个或多个列的值将数据分组,并对每个组执行聚合操作。

# 根据'group_column'列对数据进行分组,并计算每组的平均值
grouped = df.groupby('group_column').mean()

6. 数据合并与连接

Pandas提供了多种方法用于合并和连接两个或多个DataFrame。

使用merge方法合并
# 基于'key_column'列合并两个DataFrame
merged_df = pd.merge(df1, df2, on='key_column')
使用concat方法连接
# 沿着axis=0(行)连接两个DataFrame
concat_df = pd.concat([df1, df2], axis=0)

三、数据输出

Pandas也提供了将数据输出到各种格式的方法,如CSV、Excel等。

将数据输出到CSV文件


```python
# 将DataFrame写入CSV文件
df.to_csv('output_data.csv', index=False)  # index=False表示不将索引写入文件

将数据输出到Excel文件

# 注意:需要安装openpyxl或xlwt库来支持Excel文件的写入
df.to_excel('output_data.xlsx', index=False)

四、其他常用函数和方法

1. info() 方法

info() 方法用于打印DataFrame的简要摘要,包括行数、列数、每列的数据类型和非空值数量。

df.info()

2. describe() 方法

describe() 方法用于生成描述性统计信息,默认针对数值列,但也可以用于对象类型列(尽管结果可能不太有用)。

df.describe()

3. apply() 方法

apply() 方法允许你沿着DataFrame的行或列应用一个函数。

# 对每一列应用一个函数(例如,计算每列的和)
column_sums = df.apply(np.sum)

# 对每一行应用一个函数(例如,计算每行的最大值)
row_maxes = df.apply(np.max, axis=1)

4. map() 方法

map() 方法允许你根据一个字典或函数转换Series的值。

# 创建一个字典来映射'column_name'列中的值
mapping = {'old_value1': 'new_value1', 'old_value2': 'new_value2'}
df['column_name'] = df['column_name'].map(mapping)

5. pivot_table() 方法

pivot_table() 方法用于创建一个数据透视表,这是一种在数据总结和分析中常用的表格形式。

# 创建一个数据透视表,以'column1'为行索引,'column2'为列索引,计算'value_column'的平均值
pivot_table = df.pivot_table(values='value_column', index='column1', columns='column2', aggfunc='mean')

6. resample() 方法(针对时间序列数据)

resample() 方法用于重新采样时间序列数据。这在时间序列分析中非常有用,比如你想要将数据从日频率转换为月频率。

# 假设df有一个名为'date'的日期时间索引列
resampled_df = df.resample('M').mean()  # 按月重新采样并计算平均值

7. rolling() 方法

rolling() 方法用于在数据上执行滚动窗口计算。这在金融数据分析中特别有用,比如计算移动平均线。

# 计算'value_column'列的30天滚动平均值
rolling_mean = df['value_column'].rolling(window=30).mean()

8. 字符串方法(针对对象类型列)

Pandas的Series对象(特别是对象类型列)具有许多字符串方法,如str.lower(), str.upper(), str.contains(), str.replace() 等。

# 将'column_name'列中的所有值转换为小写
df['column_name'] = df['column_name'].str.lower()

# 检查'column_name'列中是否包含子字符串'substring'
contains_substring = df['column_name'].str.contains('substring')

以上就是Pandas库中的一些常用函数和方法的简要介绍。Pandas是一个功能强大的库,提供了许多其他功能和工具来处理和分析数据。通过学习和实践这些基本和高级功能,你可以更加高效地进行数据分析和处理。

标签:name,df,方法,column,数据,Pandas,加载
From: https://blog.csdn.net/qq_38614074/article/details/139883467

相关文章

  • 目标检测0:layman学习Faster-RCNN算法(基于VOC数据进行训练)
    分享:Bubbliiiing的学习小课堂博主的专栏《睿智的目标检测》中对Faster-RCNN有较为详细的描述。CSDN 链接:睿智的目标检测27——Pytorch搭建FasterR-CNN目标检测平台源代码下载  :https://github.com/bubbliiiing/faster-rcnn-pytorchB站讲解链接:配置Tensorflow+Keras......
  • juicefs cubefs 等元数据分离文件系统分析
    在近期我看到过国外一个大牛开发的hpfshttps://mp.csdn.net/mp_blog/creation/editor/139739977(请看我前面发的片文章)我瞬间就想到国内同类似产品juicefscubefs这两个东西,当时这种产品出现我就有一个疑问,为什么要把元数据单独弄个数据库去存呢?你还要开发数据冗余机制去保......
  • 操作系统的发展史、多道技术、进程理论、进程的三状态、同步异步/阻塞与非阻塞、开启
    【操作系统发展史】1为什么要使用操作系统呢?2程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,3这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,4只需要考虑自己的应用软件的编写就可以了,应用软件......
  • 探索PostgreSQL的JSON宝石:深入掌握JSON数据处理
    探索PostgreSQL的JSON宝石:深入掌握JSON数据处理引言在数据驱动的世界中,JSON已成为数据交换的事实标准。PostgreSQL,作为一款领先的关系型数据库管理系统,通过其强大的JSON支持,为开发者提供了丰富的工具来存储、查询和处理JSON数据。本文将深入探讨PostgreSQL中的JSON特性,引......
  • SpringBoot使用spring.factories加载默认配置
    在日常开发过程中,发布一些产品或者框架时,会遇到某些功能需要一些配置才能正常运行,这时我们需要的提供默认配置项,同时用户也能覆盖进行个性化创建InitializerpublicclassFrameContextInitializerimplementsApplicationContextInitializer{@Overridepublicvoid......
  • 数据库系统概论(超详解!!!) 第十四节 数据库并发控制机制
    多用户数据库系统:允许多个用户同时使用的数据库系统例:飞机定票数据库系统银行数据库系统特点:在同一时刻并发运行的事务数可达数百上千个多事务执行方式:(1)事务串行执行每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行。不能充分利用系统资源,发挥数据库......
  • python组合数据类型(字典)
          ......
  • python组合数据类型(集合)
             ......
  • 1.4Java 基本数据类型
    变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。Java的两大数据类型:内置数据类型引用......
  • python组合数据类型(列表)
              ......