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

【Pandas】Pandas日常工作的常用操作大全

【Pandas】Pandas日常工作的常用操作大全

  • Pandas的两种数据结构
  • 表格读取
    • 读取CSV或TXT文件
    • 读取Excel文件
  • 表格导出
    • 基于CSV库导出CSV
    • 基于Pandas库导出CSV、TXT
  • 表格描述信息
  • 表格访问
  • 删除
  • 修改/添加
  • 空值过滤
  • 重复值过滤

今天我们来聊聊Python中一个非常好用的数据处理工具——Pandas库。想象一下,你在工作中需要查看数据库里的信息,但这些信息不方便直接用来分析和建模。通常,我们会把这些数据先保存成CSV格式,然后再用Pandas来处理。这篇文章会教你一些Pandas的基本操作,让你轻松掌握这个强大的工具。


Pandas的两种数据结构

  Pandas主要有两种数据结构:DataFrameSeries

  · Series:类似于一维数组或列表,是由一组数据以及与之相关的数据标签(索引)构成。

  · DataFrame:类似于一个二维表格,可以看作是由多个Series按列排列构成的表格,既有行索引也有列索引。

表格读取

读取CSV或TXT文件

  有时候,读取CSVTXT文件时,可能会遇到编码错误。此时,可以尝试设置不同的编码格式。

# 读取CSV文件
df_csv = pd.read_csv('example.csv', encoding='gbk', sep='\t')
# 读取TXT文件
df_txt = pd.read_csv('example.txt', encoding='gbk', sep='\t')

读取Excel文件

  读取Excel文件时通常不需要关注编码(encoding)和分隔符(sep)的设置,因为Excel文件是二进制格式,不依赖于文本编码和分隔符来存储数据。

  Excel文件(无论是.xls还是.xlsx格式)是由单元格组成的表格数据,每个单元格可以存储不同类型的数据,包括文本、数字、日期等。Excel文件的读取和写入是通过专门的库(如openpyxlxlrdxlwt等)来完成的,这些库会处理文件内部的复杂结构。

# 读取excel
df = pd.read_excel('example.xlsx')

表格导出

基于CSV库导出CSV

  

import csv

data = [
    ['hotelid1', 'paraphrase1', 'translation1'],
    ['hotelid2', 'paraphrase2', 'translation2'],
    ['hotelid3', 'paraphrase3', 'translation3'],
    # ...
]

filename = 'data.csv'  # 文件路径和名称

with open(filename, 'w', newline='') as file:
    writer = csv.writer(file)
    # 写入表头
    writer.writerow(['hotelid', 'paraphrase', 'translation'])
    # 写入数据
    writer.writerows(data)
    file.close()

基于Pandas库导出CSV、TXT

  假设现在有个二维数组arr

arr = [
    ['Amy',2,3]
    ['John',5,6]
]

  首先要转化为df对象,然后再保存为txt

df_ = pd.DataFrame(arr)
# 不要序号 不要表头 分隔符为\t
df_.to_csv('output.txt', index=False, header=False, sep='\t')
df_.to_csv('output.csv', index=False, header=true, sep='\t')

表格描述信息

  DataFrame提供了丰富的属性和方法,用于获取数据的基本信息。一般读取文件之后,会先用以下方法预览一下表格信息。

# 读取excel
# DataFrame 的属性和方法
print(df.shape)     # 形状
print(df.columns)   # 列名
print(df.index)     # 索引
print(df.head())    # 前几行数据,默认是前 5 行
print(df.tail())    # 后几行数据,默认是后 5 行
print(df.info())    # 数据信息
print(df.describe())# 描述统计信息
print(df.mean())    # 求平均值
print(df.sum())     # 求和

表格访问

  · loc是基于标签的索引器,这意味着它接受行和列的标签(即索引名或列名)。
  · iloc是基于整数的索引器,这意味着它接受行和列的位置(即索引号)。
  · at是基于标签的单个数据访问器,速度非常快。
  · iat是基于整数位置的单个数据访问器,速度也非常快。

# 访问单列
df['列名']
df.列名
df.loc[:, '列名']
df.iloc[:, 0]

# 访问多列
df[['列名1','列名2']]
df.loc[:, ['列名1','列名2']]
df.iloc[:, 0:2]

# 访问单行
df.loc[0]
df.iloc[0]

# 访问多行
df.loc[0:2]
df.iloc[0:2]

# 访问单个元素
df.loc[0, '列名']
df.at[0, '列名']
df.iloc[1, 1]
df.iat[1, 1]

删除

# 删除行
df_new = df.drop(0)

# 使用布尔值过滤实现删除
df_new = df[df['列名'] > 2]

# 删除列
del df['列名']
df_new = df.drop('列名', axis=1)

# 重置索引
df_reset = df.reset_index(drop=True)

修改/添加

# 修改已有列/添加新列
df['列名'] = your_list

# 插入列
df.insert(1, '列名', your_list)

# 添加新行 纵向追加
df = pd.concat([df, new_rows_df], ignore_index=True)

# 添加新行 横向合并
pd.merge(df1, df2, on='列名')

空值过滤

# 过滤空值 只有这一行出现了空值就删除
df_new = df.dropna()

# 移除指定列中为空值的行
df_new = df.dropna(subset=['列名1', '列名2'])

重复值过滤

# 重复值查看 所有列重复才算重复
df.duplicated()

# 重复值查看 指定列重复才算重复
df.duplicated(subset=['列名1', '列名2'])

# 重复值删除 所有列重复才删除
df.drop_duplicates()

# 重复值删除 指定列重复才删除
df.drop_duplicates(subset=['列名1', '列名2'])

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

相关文章:

  • MFC图形函数学习07——画扇形函数
  • C++《stack与queue》
  • <项目代码>YOLOv8 苹果腐烂识别<目标检测>
  • Vue3 : Tailwindcss之margin样式类
  • Linux网络编程——网络字节序和IP地址详解
  • RabbitMQ队列详细属性(重要)
  • Go 语言版本管理——Goenv
  • 探索淘宝拍立淘API:解锁以图搜图的购物新体验
  • 浅谈C#事件
  • 在 Facebook 上投放广告需要多少钱?
  • Docker续6:容器网络
  • CentOS 部署 RocketMQ 详细指南
  • Multi-Mode DOA Estimation AND Relax Super Resolution DOA
  • C# 窗口页面布局
  • 深入探究 RocketMQ:分布式消息中间件的卓越之选》
  • 有没有性价比高一些的开放式耳机推荐?盘点四款高性价比蓝牙耳机
  • 智能代码编辑器:Visual Studio Code的深度剖析
  • C++:Opencv读取ONNX模型,通俗易懂
  • jmeter响应断言、json断言、断言持续时间、大小断言操作
  • 暴力破解和撞库攻击有什么区别,怎么防御暴力破解和撞库攻击
  • FPGA进阶教程16 同一块FPGA的两个网口实现arp自通信
  • Opencv中的直方图(4)局部直方图均衡技术函数createCLAHE()的使用
  • windows修改升级时间
  • 九、安装artifactory并配置PostgreSQL--失败了
  • 如何通过本地服务器来测试环信的回调功能
  • powershell自动提交git脚本