Python Pandas读写txt和csv文件的方法详解
作者:无 发布时间:2022-08-05 17:06:31
一、文本文件
文本文件,主要包括csv和txt两种等,相应接口为read_csv()和to_csv(),分别用于读写数据
1. read_csv()
格式代码:
pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
常用参数:
filepath_or_buffer:文件路径
sep=',':默认以,为数据分隔符
skiprows:跳过前几行
nrows :只读前几行
parse_dates = [‘col_name’]:指定某行读取为日期格式
index_col = [‘col_1’,‘col_2’]:读取指定的几列
error_bad_lines = False :当某行数据有问题时,不报错,直接跳过,处理脏数据时使用
na_values = ‘NULL’:将NULL识别为空值
header = 0:表示以数据的第一行为列索引
encoding = “utf-8”:表明以utf-8为编码规则。
names = range(0,50)):表示以[0…49]为列索引的名字
(1)读取csv文件:
>>> import pandas as pd
>>>
>>> df = pd.read_csv(r"E:\Python学习\test.csv")
>>> print(df)
name age
0 小红 10
1 小明 20
2 小白 30
>>> print(type(df))
<class 'pandas.core.frame.DataFrame'>
>>> # 行和列
>>> print(df.shape)
(3, 2)
>>> print(list(df.columns))
['name', 'age']
(2)读取txt文件:
>>> df = pd.read_csv(r"E:\Python学习\test.txt")
>>> print(df)
北京
0 上海
1 成都
2 深圳
3 广州
4 广东
skiprows
跳过前n行
>>> df = pd.read_csv(r"E:\Python学习\test.csv", skiprows=2)
>>> print(df)
小明 20
0 小白 30
nrows
只读前几行
>>> df = pd.read_csv(r"E:\Python学习\test.csv", nrows =2)
>>> print(df)
name age
0 小红 10
1 小明 20
index_col
index_col = [‘col_1’,‘col_2’]:读取指定的几列。整数或者字符串或者整数/字符串列表。指定用作的行标签的列。
感觉有问题,和我想象中不同:
>>> df = pd.read_csv(r"E:\Python学习\test.csv", index_col =['name'])
>>> print(df)
age
name
小红 10
小明 20
小白 30
>>> df = pd.read_csv(r"E:\Python学习\test.csv", index_col=1)
>>> print(df)
name
age
10 小红
20 小明
30 小白
names
names = range(0,50):表示以[0…49]为列索引的名字
不与header=0
共同使用:
>>> df = pd.read_csv(r"E:\Python学习\test.csv", names=['姓名', '年龄'])
>>> print(df)
姓名 年龄
0 name age
1 小红 10
2 小明 20
3 小白 30
与header=0
共同使用:
>>> df = pd.read_csv(r"E:\Python学习\test.csv", header=0, names=['姓名', '年龄'])
>>> print(df)
姓名 年龄
0 小红 10
1 小明 20
2 小白 30
2. to_csv()
格式代码:
pd.to_csv(path_or_buf,sep,na_rep,columns,header,index)
常用参数:
path_or_buf:str:放文件名、相对路径、文件流等。
sep:分隔符。与read_csv()中sep参数意思一样。
na_rep:将NaN转换为特定值。
columns:指定哪些列写进去。
header;默认header=0,如果没有表头,设置header=None。
index:关于索引的,默认True,写入索引。
(1)写入csv文件:
>>> import pandas as pd
>>>
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> print(df)
A B C
0 1 2 NaN
1 3 4 5.0
>>> print(type(df))
<class 'pandas.core.frame.DataFrame'>
>>> df.to_csv('test1.csv')
>>>
可以看到生成了新文件:
我们读取看看:
>>> df1 = pd.read_csv(r"test1.csv", header=0, encoding="utf-8")
>>> print(df1)
A B C
0 1 2 NaN
1 3 4 5.0
(2)写入txt文件:
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test1.txt')
生成新文件:
sep
设置分隔符
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test2.csv', sep=';') # 设置;号为分割符
可以看到分隔符为分号:
na_rep
na_rep:将NaN转换为特定值。
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test3.csv', na_rep='100') # 空值替换为100
>>>
>>> df1 = pd.read_csv('test3.csv')
>>> print(df1)
Unnamed: 0 A B C
0 0 1 2 100.0
1 1 3 4 5.0
columns
columns:指定哪些列写进去。
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test4.csv', columns=['A','B']) # 只写入A、B列
>>>
>>> df1 = pd.read_csv('test4.csv')
>>> print(df1)
Unnamed: 0 A B
0 0 1 2
1 1 3 4
header
header;默认header=0,如果没有表头,设置header=None。
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test5.csv', header=None)
>>>
>>> df1 = pd.read_csv('test5.csv')
>>> print(df1)
0 1 2 Unnamed: 3
0 1 3 4 5.0
index
index:关于索引的,默认True,写入索引
不保留索引:
>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]
>>> df = pd.DataFrame(data)
>>> df.to_csv('test6.csv', index=False)
>>>
>>> df1 = pd.read_csv('test6.csv')
>>> print(df1)
A B C
0 1 2 NaN
1 3 4 5.0
来源:https://blog.csdn.net/yuan2019035055/article/details/126908798


猜你喜欢
- 网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。(1) 选择
- 本文介绍FCKeditor在Java环境下的使用方法。一、简介 功能:所见即所得,支持图片和Flash,工具栏可自由配置,使用简单兼容性:I
- 一、题目内容给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的
- 当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序。要实现这个过
- 使用socket实现tcp通信,需导入socket模块1、服务端主要步骤:(1)创建socket:socket.socket(family=
- 自己在刚学习python时写的,中途遇到很多问题,查了很多资料,下面就是我爬取租房信息的代码:链家的房租网站两个导入的包1.requests
- 前几天,Opera宣布其用户已经超过1亿——桌面版和手机版均超过5000万。Opera Mini是一个很优秀的手机浏览器,对手机用户而言,O
- 注:所谓n位数“水仙花数”是指一个n数,其各位数字n次方和等于该数本身。如三位数“水仙花数”是指一个三位数,其各位数3次方和等于该数本身。一
- Python2默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open()方法打
- PyQt实现界面翻转切换效果是用qt的场景功能来实现的,用到了QGraphicsView,QGraphicsLinearLayout,QGr
- remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空List_remove = [1, 2, 2, 2, 3, 4]pr
- 这几天不是很忙,就找了些拖动布局方面的资料看看,也学着写了个拖动布局的效果,没想到花了好多时间,七拼八凑,总算是把这个效果写出来了。哎!还是
- <?php//php需要开启ssl(OpenSSL)支持$apnsCert = "ck.
- 本文实例讲述了js表格排序的方法。分享给大家供大家参考。具体如下:<html><head><title>
- Pygame的Draw绘图Pygame 中提供了一个draw模块用来绘制一些简单的图形状,比如矩形、多边形、圆形、直线、弧线等。pygame
- --创建数据库(文件:主要数据文件mdf==1,次要数据文件ndf>=0,日志文件ldf>=1)--文件组:当1mdf,5个nd
- 定位篇UI 自动化很多时候的苦恼都是定位不到,其实说实话我到现在有时候也是莫名其妙的定位到或者定位不到。好在这个框架定位方式的上限非常以及特
- 概述:可以将.py源代码转换成无需源代码的可执行文件(直接就可以运行的程序)因为有的时候Windows,Mac,Linux系统上并没有安装P
- 回复图片、音频、视频消息都是需要media_id的,这个是需要将多媒体文件上传到微信服务器才有的。将多媒体文件上传到微信服务器,以及从微信服
- 前言大家都知道PHP 的页面静态化有多种实现方式,比如使用输出缓冲(output buffering),该种方式是把数据缓存在 PHP 的缓