
pandas处理各种表格数据
发布日期:2021-05-18 03:15:53
浏览次数:20
分类:精选文章
本文共 2689 字,大约阅读时间需要 8 分钟。
Pandas处理各种表格数据
一、读取文本格式数据
Pandas库提供了多种函数来读取不同格式的文本文件。以下是常见参数的解释和示例:
1.1 常见参数
sep
:指定分隔符,可为逗号、空格或其他正则表达式。header
:默认为True
,读取文件的第一行为列名。如果设为None
,则不读取标题行。names
:指定列名列表,可以与header
配合使用。index_col
:将某一列作为数据框的索引,可以传入多个列名表示层次化索引。skiprows
:跳过注释行,传入列表形式。na_values
:指定缺失值的表示方式,可以是列表或字典。
1.2 示例代码
import pandas as pdimport numpy as npimport sys# 读取CSV文件,默认有标题行df = pd.read_csv('ex1.csv')print(df)# 指定分隔符为逗号df = pd.read_table('ex1.csv', sep=',')print(df)# 读取没有标题行的CSV文件df = pd.read_csv('ex2.csv', header=None)print(df)# 自定义列名df = pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'names'])print(df)# 将某一列作为索引df = pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'names'], index_col='names')print(df)# 读取带有层次化索引的文件df = pd.read_csv('csv_mindex.csv')print('原始样子:', '\n', df)# 读取带有层次化索引的文件(重命名索引)df = pd.read_csv('csv_mindex.csv', index_col=['keys', 'key2'])print(df)# 跳过特定行df = pd.read_csv('ex4.csv')print('原始样子:', '\n', df)# 跳过指定行df = pd.read_csv('ex4.csv', skiprows=[0, 2])print(df)# 指定缺失值表示方式df = pd.read_csv('ex4.csv', skiprows=[0, 2], na_values=['hello'])print(df)# 使用字典指定不同列的缺失值表示sentinels = {'message':['foo', 'NA'], 'd':['a', 'NaN']}df = pd.read_csv('ex4.csv', skiprows=[0, 2], na_values=sentinels)print(df)
二、逐块读取文本文件
对于大型文件,可以通过分块读取来提高处理效率。
2.1 nrows参数
pd.read_csv('ex1.csv', nrows=4)
2.2 chunksize参数
chunks = pd.read_csv('ex1.csv', chunksize=2)for chunk in chunks: print(chunk) print('=' * 10)
2.3 示例输出
a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 foo=======a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 foo>>>>>>>
三、将数据写出到文本格式
3.1 基础写入
data = pd.read_csv('ex1.csv', nrows=3)data.to_csv('ex1_1.csv')
3.2 定义分隔符
data.to_csv('ex1_2.csv', sep='|')
3.3 处理缺失值
data.to_csv('ex1_1.csv', na_rep='NULL')
3.4 输出到控制台
data.to_csv(sys.stdout, index=False, header=False)
3.5 指定写入列
data.to_csv(sys.stdout, index=False, columns=['a', 'b'])
3.6 全列写入
data.to_csv(sys.stdout)
3.7 示例输出
1,2,3,4,hello5,6,7,8,world9,10,11,12,foo
四、DataFrame和数据库
4.1 从数据库读取数据
import pymysqlconn = pymysql.connect(host='172.31.238.166', port=3306, user='luowang', passwd='root', charset='UTF8', db='dyx')cursor = conn.cursor()sql = 'select * from access_log'cursor.execute(sql)rows = cursor.fetchall()print(cursor.description)# 创建DataFramedf = pd.DataFrame(rows, columns=[i[0] for i in cursor.description])print(df)
4.2 从数据库读取数据(二维结果)
rows = list(rows)df = pd.DataFrame(rows, columns=[i[0] for i in cursor.description])print(df)
4.3 读取带有层次化索引的数据库数据
pd.DataFrame(list(rows), columns=[i[0] for i in cursor.description])
通过以上方法,可以方便地读取和处理各种格式的数据,并将结果写出到文本文件中。Pandas库为数据处理提供了强大的工具,适用于各种复杂场景。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月14日 05时46分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
2019-03-06
【Flink】Flink 底层RPC框架分析
2019-03-06
解决:angularjs radio默认选中失效问题
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
JavaSE总结
2019-03-06
Python IO编程
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
c++之程序流程控制
2019-03-06
李笑来必读书籍整理
2019-03-06