1、准备.txt的数据文件
其实pandas读写.txt文件和读写csv文件是类似的,而且使用的都是pd.read_csv() / df.to_csv()
2、pandas.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=',' # 以,为数据分隔符
shkiprows= 10 # 跳过前十行
nrows = 10 # 只去前10行
usecols=[0,1,2,...] #需要读取的列,可以是列的位置编号,也可以是列的名称
parse_dates = ['col_name'] # 指定某行读取为日期格式
index_col = ['col_1','col_2'] # 读取指定的几列
error_bad_lines = False # 当某行数据有问题时,不报错,直接跳过,处理脏数据时使用
na_values = 'NULL' # 将NULL识别为空值
encoding='utf-8' #指明读取文件的编码,默认utf-8
3、使用Pandas读取用英文逗号“,”分隔的.txt文件,sep=','可以省略
小心编码问题:
import numpy as npimport pandas as pddf = pd.read_csv(r"e:\text01.txt",encoding='ANSI')# df = pd.read_csv(r"e:\text01.txt",sep=',' ,encoding='utf-8')print(df) >>结果: 编号 姓名 职业 地址0 1001 jalen 计算机 贵州1 1002 xr 运营 贵州...
上面的代码就读取了整个text01.txt的数据,需要注意的是编码转换问题,你读取的时候encoding必须一致,你也可以打开文档--另存为--修改编码为utf-8指定的编码格式。
import numpy as npimport pandas as pddf = pd.read_csv(r"e:\text01.txt",encoding='utf-8')# df = pd.read_csv(r"e:\text01.txt",sep=',' ,encoding='utf-8')print(df)
4、使用Pandas读取其他分割符的.txt文件,sep='分隔符'写清楚
同样注意编码保持一致
import numpy as npimport pandas as pddf = pd.read_csv(r"e:\text02.txt",sep=' ' ,encoding='utf-8')print(df) >>结果: 编号 地址0 1 贵州1 2 广东2 3 杭州3 4 湖北
5、使用Pandas读取.txt文件指定的行和列
import numpy as npimport pandas as pd#读的文件;读取第0,1,3列;不读前两行,然后读3行;忽略列名;编码df = pd.read_csv(r"e:\text01.txt",sep=',',usecols=[0,1,3],skiprows=2,nrows=3,header=None,encoding='utf-8')print(df) >> 结果: 0 1 30 1002 xr 贵州1 1003 lili 贵州2 1004 nini 广东
6、使用Pandas写入.txt文件
写入csv文件是最常用的,csv文件默认用’,’作为分隔符。
语法:
df.to_csv(path_or_buf=None, sep=’,’, na_rep=”, float_format=None, columns=None, header=True, index=True, index_label=None, mode=’w’, encoding=None)
常用参数说明:
path_or_buf:文件名、文件具体、相对路径、文件流等
sep:文件分割符号,to_csv()的sep默认为’,’,可指定任意字符作为分隔符
na_rep:将NaN转换为特定值。写入时NaN会被表示为空字符串,我们可能希望用其他值代替,如:‘- ’、‘/’、'NULL' 等
columns:选择部分列写入。保留部分列且按列排序,columns=['B列列名','A列列名']
header:忽略列名,header=None 不写入列名
index:index=False 表示选择不写入索引
import numpy as npimport pandas as pd #读取text01.txt指定的数据df = pd.read_csv(r"e:\text01.txt",sep=',',usecols=['编号','姓名','地址'],nrows=3,encoding='utf-8')print(df) #将df写入.txt文件df.to_csv(r"e:\text03.txt",sep=",",columns=['编号','姓名','地址'],index=False,encoding='utf-8')print("写入成功") #再读取验证text03.txtdf3 = pd.read_csv(r"e:\text03.txt",sep=",",encoding='utf-8')print(df3) >>结果: 编号 姓名 地址0 1001 jalen 贵州1 1002 xr 贵州2 1003 lili 贵州写入成功 编号 姓名 地址0 1001 jalen 贵州1 1002 xr 贵州2 1003 lili 贵州
python连接操作Oracle数据库