python-csv文件操作_to_csv 写入的为字符串quoting = 1

    with open('csv_test.csv', newline='', encoding='utf-8-sig') as csv_file:
        dict_reader = csv.DictReader(csv_file)
        for row in dict_reader:
            # print(type(row))
            print(row['name'], row['city'])

name和city

一般我们不需要列名,而是需要通过列名作为键值来获取数据,这种读的方式是比较好的。

写入csv

writer(csvfile, dialect=‘excel’, **fmtparams)

返回一个 writer 对象,该对象负责将用户的数据在给定的文件类对象上转换为带分隔符的字符串。

    with open('csv_test.csv', 'a', newline='', encoding='utf-8-sig') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow(['bo', 'male', '2020/09/02', 'QinHuangdao'])

写入后结果如下

csv_test.csv数据

DictWriter(f, fieldnames, restval=‘’, extrasaction=‘raise’, dialect=‘excel’, *args, **kwds)

创建一个对象,该对象在操作上类似常规 writer,但能将字典映射到输出行。fieldnames 参数是由 key(键)组成的 序列,用于指定字典中的 value (值)的顺序,这些值会按指定顺序传递给 writerow() 方法并写入 f 文件。如果字典缺少 fieldnames 中的键,则可选参数 restval 用于指定要写入的值。如果传递给 writerow() 方法的字典的某些键在 fieldnames 中找不到,则可选参数 extrasaction 用于指定要执行的操作。如果将其设置为 'raise' (默认值),则会引发 ValueError。 如果将其设置为 'ignore',则字典中的其他键值将被忽略。fieldnames 参数不是可选参数。

    with open('names.csv', 'w', newline='') as csv_file:
        fieldnames = ['first_name', 'last_name']
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
        writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
        writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

生成的names.csv

names.csv

Pandas

读取-read_csv

常用参数

参数名类型含义举例
filepath_or_bufferstr文件路径D://test.csv
sepstr,默认为英文逗号","指定的分隔符;
encodingstr编码utf-8
headerint数据标题1
usecols[]返回哪几列数据[1,2]
enginestr,默认c,可选python引擎python
skiprows[]、int要跳过的行号[2,3]、5
skipfooterint,默认0(支持c引擎)从底部开始忽略1

返回DataFrame

属性参数

属性类型含义
indexRangeIndexDataFrame的索引(行标签)。
columnsIndexDataFrame的列标签。
dtypesSeries返回DataFrame中的dtype。
info([verbose, buf, max_cols, …])打印DataFrame的简要摘要。
select_dtypes([include, exclude])根据列dtypes返回DataFrame列的子集。
valuesnumpy.adarray返回DataFrame的Numpy表示形式。
axes[index,column,dtype]返回一个表示DataFrame轴的列表。
ndimint返回一个表示轴数/数组维数的整数。
sizeint返回表示此对象中元素数量的int。
shape(行数,列数)返回一个表示DataFrame维数的元组。
memory_usage([index, deep])返回每列的内存使用情况(以字节为单位)。
empty指示DataFrame是否为空。

test.csv数据如下

frank,yu,lady,killer
name,type,value,date
1,2,3,4
0,1,2,3
4,5,6,7.34
7,8,9.2,5

属性

读取read_csv调用部分

pd.read_csv('test.csv', encoding='utf-8', header=0, usecols=[1, 2, 3], engine='python', skiprows=1,skipfooter=1)

选择1,2,3列,前后去除一行,剩下的如下,第一行为标题

type,value,date

2,3,4

1,2,3

5,6,7.34

dtypes将date列作为float64

显示整数时只显示了type和value列

索引及迭代器

函数类型含义举例
head(n)返回前n行。head(-2)
at[index,column]访问行/列标签对的单个值。at[2,‘value’]
iat[index,column]通过整数位置访问行/列对的单个值。iat[2,2]
loc通过标签或布尔数组访问一组行和列。loc[[True,False,True]]
iloc基于位置的纯基于整数位置的索引。iloc[1:3]
insert(loc, column, value[, …])None将列插入到DataFrame中的指定位置。insert(1, 'name', [10,11,12])
items()遍历(列名,系列)对。csv_data.items()
iteritems()遍历(列名,系列)对。csv_data.items()
keys()获取“信息轴”(有关更多信息,请参见索引)。csv_data.keys()
iterrows()将DataFrame行作为(索引,系列)对进行迭代。csv_data.iterrows()
itertuples([index, name])以namedtuple的形式遍历DataFrame行。csv_data.itertuples(index=False)
lookup(row_labels,col_labels)DataFrame基于标签的“花式索引”功能。csv_data.lookup([1, 2], [‘type’, ‘value’])
pop(item)将某列从DataFrame中删除。csv_data.pop(‘date’)
tail([n])返回最后n行。csv_data.tail(2)
xs(key[, axis, level, drop_level])从Series / DataFrame返回横截面。
get(key[, default])从对象获取给定键的项目(例如:DataFrame列)。
isin(values)DataFrame中的每个元素是否包含在值中。csv_data.isin([1, 2, 6])
where(cond[, other, inplace, …])替换条件为False的值。
mask(cond[, other, inplace, axis, …])替换条件为True的值。
query(expr[, inplace])使用布尔表达式查询DataFrame的列。
写入-to_csv

参数

**path_or_buf:**str或文件句柄,默认为None

文件路径或对象,如果提供None,则结果以字符串形式返回。如果传递了文件对象,则应使用newline =''打开它 ,从而禁用通用换行符。

**sep:**str,默认为“,”

长度为1的字符串。输出文件的字段分隔符。

**na_rep:**str,默认’’

缺失数据的表示。

**float_format:**str,默认值None

浮点数的格式字符串。

**columns:**sequence,可选

要写的列。

header:bool或str组成的列表,默认为True

写出列名。如果给出了字符串列表,则假定它是列名的别名。

**index:**bool,默认为True

写行名(索引)。

**index_label:**str或sequence,或者为False,默认为None

索引列的列标签(如果需要)。如果没有给出,并且标头和索引为True,则使用索引名。如果对象使用MultiIndex,则应给出一个序列。如果为False,则不打印索引名称的字段。使用index_label = False可以更轻松地导入R中。

mode:str

Python写入模式,默认为“ w”。

**encoding:**str,可选

表示要在输出文件中使用的编码的字符串,默认为’utf-8’。

**compression:**str或dict,默认为“推断”

如果为str,则表示压缩模式。如果是dict,则“方法”中的值是压缩模式。压缩模式可以是以下任何可能的值:{‘infer’,‘gzip’,‘bz2’,‘zip’,‘xz’,None}。如果压缩模式为“推断”,而path_or_buf与路径类似,则从以下扩展名检测压缩模式:“。gz”,“。bz2”,“。zip”或“ .xz”。(否则不压缩)。如果给定的dict和mode为{‘zip’,‘gzip’,‘bz2’}之一,或推断为上述之一,则将其他条目作为附加压缩选项传递。

**quoting:**csv模块中的可选常量

默认为csv.QUOTE_MINIMAL。如果设置了float_format, 则浮点数将转换为字符串,因此csv.QUOTE_NONNUMERIC会将其视为非数字形式。

**quotechar:**str,默认为“”

长度为1的字符串。用于引用字段的字符。

**line_terminator:**str,可选

在输出文件中使用的换行符或字符序列。默认为os.linesep,这取决于调用此方法的操作系统(对于Linux为’n’,对于Windows为’rn’)。

在版本0.24.0中更改。

**chunksize:**int或None

一次写入的行数。

**date_format:**str,默认值None

日期时间对象的格式字符串。

**doublequote:**bool,默认为True

控制字段内quotechar的引用。

**escapechar:**str,默认值None

长度为1的字符串。 在适当时用于转义sep和quotechar的字符。

**decimal:**str,默认为“.”

字符被识别为小数点分隔符。例如,对于欧洲数据,请使用“,”。

**errors:**str,默认为“strict”

指定如何处理编码和解码错误。

举例:

csv_data.to_csv('demo.csv', header=True, index=False, columns=['type', 'value'])

生成的demo.csv数据如下

type,value
2,3
1,2
5,6

全部代码

"""
--coding:utf-8--
@File: csvtest.py
@Author:frank yu
@DateTime: 2020.09.01 14:18
@Contact: frankyu112058@gmail.com
@Description:
"""
import pandas as pd
from pandas import DataFrame as df


def pd_test():
    # 读取csv文件,返回DataFrame对象
    csv_data = pd.read_csv('test.csv', encoding='utf-8', header=0, usecols=[1, 2, 3], engine='python', skiprows=1,
                           skipfooter=1)
    # 属性
    # print("行标签:", type(csv_data.index), csv_data.index)
    # print("列标签:", type(csv_data.columns), csv_data.columns)
    # print("dtypes:", type(csv_data.dtypes), "\n", csv_data.dtypes)
    # print("info:", csv_data.info(verbose=True))
    # print("显示整数\n", csv_data.select_dtypes(include="int64"))
    # print("Numpy表示形式:", type(csv_data.values), "\n", csv_data.values)
    # print("表示DataFrame轴的列表:", csv_data.axes)
    # print("表示DataFrame轴数的整数:", csv_data.ndim)
    # print("元素数量:", csv_data.size)
    # print("维数(行,列):", csv_data.shape)
    # print("DataFrame是否为空?:", csv_data.empty)

    # 迭代器
    print('后2行数据:\n', csv_data.head(-2))
    print("2行value列的数据:", csv_data.at[2, 'value'])
    print("2行2列的数据:", csv_data.iat[2, 2])
    print("0行、2行的数据:\n", csv_data.loc[[True, False, True]])
    print("1行到3行(不包括)的数据:\n", csv_data.iloc[1:3])
    csv_data.insert(1, 'name', [10, 11, 12])


**收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/b36ea6b36f125e9e6c4bdd7bde794415.png)
![img](https://img-blog.csdnimg.cn/img_convert/07909ed7ad3dffa856da3f2e1872680c.png)
![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)
![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)
![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png) 
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!**

718906794442)]
![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)
![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)
![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png) 
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!**

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用csv模块将字符串列表写入csv文件。以下是一个简单的示例代码: ```python import csv # 定义字符串列表 str_lst = ["apple", "banana", "cherry", "date"] # 打开文件写入字符串列表 with open('output.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(["String List"]) for item in str_lst: writer.writerow([item]) ``` 在上面的示例中,我们首先定义了一个字符串列表`str_lst`,然后使用`csv.writer()`方法创建一个csv文件写入器。我们打开一个名为"output.csv"的文件,并将字符串列表写入文件。我们使用`writerow()`方法将每个字符串作为单独的行写入csv文件。此外,我们也可以使用`writerows()`方法将整个字符串列表作为单独的行写入csv文件。 需要注意的是,csv文件写入器在写入字符串时会将字符串自动转义。如果要避免转义,请使用`csv.writer()`方法的`quoting`参数,将其设置为`csv.QUOTE_NONE`。例如: ```python import csv # 定义字符串列表 str_lst = ["apple", "banana", "cherry", "date"] # 打开文件写入字符串列表,禁用转义 with open('output.csv', 'w', newline='') as file: writer = csv.writer(file, quoting=csv.QUOTE_NONE) writer.writerow(["String List"]) for item in str_lst: writer.writerow([item]) ``` 最后,我们使用`with`语句打开文件写入字符串列表。`with`语句可以确保在完成文件操作后自动关闭文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值