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

【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 csvdata = [['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.mrgr.cn/news/19875.html

相关文章:

  • 刘润《关键跃升》读书笔记6
  • 【Spring Boot 3】【Web】处理跨域资源共享 CORS
  • 云动态摘要 2024-09-04
  • 手把手教你搭建 Harbor 私有镜像仓库,包含完整的自签证书及验证过程
  • 人工智能顶会IJCAI: 面向惯性传感器信号增强的深度学习架构
  • 网页版修改本地数据器:重新布局,引入 highlight.js高亮显示代码
  • MySQL常用窗口函数总和
  • 连接查询、自关联、子查询
  • torchvision库学习之transforms.Compose(模块)
  • DS18B20时序抓图
  • Nginx服务详解
  • Matplotlib | 绘制饼图
  • 一文教你学会java代码审计
  • 图论篇--代码随想录算法训练营第五十天打卡| 深度优先搜索理论基础,98. 所有可达路径,广度优先搜索理论基础
  • Nacos Config的配置中心
  • 牛客周赛 Round 58(ABCDF)
  • 数据库和MySQL
  • 基于51单片机的电动机控制系统的设计
  • linux~~目录结构远程登录教程(xshell+xftp)
  • C++基础知识之数组