python使用pandas读写到csv 文件


#python使用pandas读写到csv 文件

pandas写入到csv文件

1.引用第三方库 pandas
2. 用pandas写入到csv文件

from pandas import DataFrame

def add_csv(filename,title,times,articletime,pinlun):

     data = {
         'title': [title],
         'time': [times],
         'articletime': [articletime],
         'pinlun': [pinlun],
         }
     try:
         df = DataFrame(data, columns= ['title', 'time', 'articletime', 'pinlun'])
         df.to_csv (filename, mode="a" ,index = False, header=False,encoding='gb18030') 
         # filename为 csv文件, mode为a 表示追加, index为写入行名称(索引),header为每次追加不把标题追加进去
         #encoding为设置编码格式,我在csv设置中文title 必须得使用 GBK,用utf-8会乱码,但是追加进去内容有 其它禁止				   的,识别不了,追加会报错,这时候只能使用 gb18030
         print("追加成功")
     except Exception as e :
         print(f"追加失败,{e}")
         

to_csv 用法详解

to_csv 详细解释:
path_or_buf=None 字符串或文件目录,文件路径或对象,如果未提供,结果将作为字符串返回。如果传递了一个文件对象,应该用换行= ’ ',禁用通用换行符。

sep=’,’ 输出文件的字段分隔符,默认点

na_rep=’’,缺失数据填充

float_format=None,小数点保留几位

columns=None, 要写入的字段

header=True,列名的别名

index=True,写行名(索引)

index_label=None,索引列的列标签。如果没有给出,并且header和index为True,则使用索引名。如果对象使用多索引,应该给出一个序列。如果不打印索引名称的字段。使用index _ label = Falser以便在R中更容易导入

mode=‘w’ 写入模式,默认为w,
r : 只能读, 必须存在, 可在任意位置读取

w : 只能写, 可以不存在, 必会擦掉原有内容从头写

a : 只能写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针无效

r+ : 可读可写, 必须存在, 可在任意位置读写, 读与写共用同一个指针

w+ : 可读可写, 可以不存在, 必会擦掉原有内容从头写

a+ : 可读可写, 可以不存在, 必不能修改原有内容, 只能在结尾追加写, 文件指针只对读有效 (写操作会将文件指针移动到文件尾)

encoding=None , 表示输出文件中使用的编码的字符串,默认为“utf-8”

一、编码方式不同UTF-8编码采用的是一种多字节编码,在英文中8位代表一个字节,而中文字是24位代表一个字节。而GBK编码方式都是通过双字节来表达,不管文字是英文还是中文字符都是一概而论,当然在区分中文的时候,会定位最高位为1。
二、UIF-8及GBK的兼容性这两种编码都是系统的字符编码,GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准,UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
也就是说如果你的网站使用的是UTF-8编码,在国外观看你的网站浏览器上就会帮你切换到中文状态,而使用GBK编码的话,在国外浏览网页就必须要下载中文语言支持包,如果没有下载就会出现乱码的现象。

compression=‘infer’ 如果是字符串,表示压缩模式。如果为dict,则’ method '处的值是压缩模式。压缩模式可以是以下任何可能的值:{ ’ infer ‘,’ gzip ‘,’ bz2 ‘,’ zip ‘,’ xz ‘,’ None}。如果压缩模式是“推断”和path_or_buf类似于路径,则从以下扩展中检测压缩模式:“”。gz ‘,. bz2 ‘,’。zip’ or '。xz’。(否则不压缩)。如果给定的dict和模式是{‘zip ‘,’ gzip ‘,’ bz2’}之一,或根据上述推断,则其他条目作为附加压缩选项传递

quoting=None, 默认为to csv.QUOTE_MINIMAL。如果你设置了一个浮点格式(_ f)然后浮点被转换成字符串,从而转换成csv.QUOTE_MINIMALl将会将它们视为非数字

quotechar=’"’ 用于引用字段的字符

line_terminator=None 输出文件中使用的换行符或字符序列。默认为os.linesep,这取决于调用此方法的操作系统(例如,对于linux为“n”,对于Windows为“rn”)

chunksize=None 一次写入行

date_format=None , 日期时间对象的格式字符串

doublequote=True, 引用路径在双引号内

escapechar=None, 用于转义的字符

decimal=’.’, 识别为十进制分隔符的字符

errors=‘strict’ 指定如何处理编码和解码错误

读取csv文件内容

import pandas as pd

csv_data = pd.read_csv(filename, encoding = 'UTF-8')  # filename csv文件名

read_csv 用法详解

filepath_or_buffer:任何有效的字符串路径。
sep:str,default ','.
一般csv默认逗号为分隔符,如果想使用其他字符对csv文件进行分隔可以指定为其他的字符,此外,还可以指定正则表达式为分隔符。
delimiter:str,默认为None。sep的别名。
header:int,list of int, default 'infer'.
指定DataFrame的某行为列标签,默认为第一行,等同于header=0。如果header=1,则第二行选为列标签。特别的,如果header=None,则列名为0,1,2,3......如果设置header=[0,1,2],则将0,1,2中的值组合为列名。注意:header=0表示数据的第一行而不是文件的第一行,因为有时我们会跳过空白行,此时header=0不会指定跳过的空白行作为列标签。
names:array-like, optional.
可以将header设为None然后传入一个类数组结构自定义列标签。
index_col:int, str, sequence of int / str, or False, default None.
与header类似,指定列作为Dataframe的行标签,可以选择多列组合为行标签。
usecols:list-like or callable.
选择想要返回的列,可以按列数取,也可以按列名取。
squeeze:bool, default False.
如果参数数据只包含一列,则返回的是一个Series。
prefix:bool, default True.
当header=None时给列标签添加前缀。如:prefix='X',则列标签为['X1', 'X2', 'X3'......]。
mangle_dupe_cols:bool, default True.
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐