python-csv文件操作 深碍√TFBOYSˉ_ 2022-12-03 01:58 233阅读 0赞 **目录** 简介 csv文件规范 包 csv 读取csv 写入csv Pandas 读取-read\_csv 写入-to\_csv 参考 -------------------- # 简介 # python中使用csv文件保存数据比较常见,之前一直使用自带的csv,今天又找了找资料,看见了两个。 因为csv可以和.xls、xlsx转换,这里也提一下,对于.xls,.xlsx文件,也可以使用xlwt(新建写入)、xlrd(只读)、xlutils(复制、修改),这些包还可以进行合并单元格等操作,如果只是简单的读写数据,不必使用。 # csv文件规范 # 1、使用回车/换行这两个字符作为行分隔符,最后一行数据可以没有这两个字符。 2、标题行是否需要,要双方显示约定 3、每行记录的字段数要相同,使用逗号分隔。逗号是默认使用的值,双方可以约定别的。 4、任何字段的值都可以使用双引号括起来. 为简单起见,可以要求都使用双引号。 5、字段值中如果有回车符、换行符,双引号,逗号(或约定的其他符号),必须要使用双引号括起来,这是必须的。 6、如果值中有双引号,使用一对双引号来表示原来的一个双引号。 # 包 # ## [csv][] ## csv\_test.csv数据如下: name,sex,date,city frank,male,2020/8/8,shijiazhuang lady,female,2020/8/9,beijing killer,male,2020/6/6,shanghai yu,female,2020/8/9,baoding ### 读取csv ### **`csv.``reader`(*csvfile*, *dialect='excel'*, *\*\*fmtparams*)** 返回一个 reader 对象,该对象将逐行遍历 *csvfile*。如果 *csvfile* 是文件对象,则打开它时应使用 `newline=''` 遍历这个对象可以得到一个列表,每个元素就是该行的某列值,全部为字符串。 with open('csv_test.csv', newline='', encoding='utf-8') as csv_file: rows = csv.reader(csv_file) for row in rows: # print(type(row)) print(row) 结果如下: ![20200925150541324.PNG][] 每行结果 第一行第一列有点问题。 可以使用encoding="utf-8-sig"来解决。 **`DictReader`(*f*, *fieldnames=None*, *restkey=None*, *restval=None*, *dialect='excel'*, *\*args*, *\*\*kwds*)** 创建一个对象,其操作类似于常规 reader 但会将每行中的信息映射到一个 [`OrderedDict`][OrderedDict],其中的键由可选的 *fieldnames* 形参给出。 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']) ![20200925152108202.PNG][] 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']) 写入后结果如下 ![20200925153451329.PNG][] csv\_test.csv数据 **`DictWriter`(*f*, *fieldnames*, *restval=''*, *extrasaction='raise'*, *dialect='excel'*, *\*args*, *\*\*kwds*)** 创建一个对象,该对象在操作上类似常规 writer,但能将字典映射到输出行。*fieldnames* 参数是由 key(键)组成的 [`序列`][Link 1],用于指定字典中的 value (值)的顺序,这些值会按指定顺序传递给 `writerow()` 方法并写入 *f* 文件。如果字典缺少 *fieldnames* 中的键,则可选参数 *restval* 用于指定要写入的值。如果传递给 `writerow()` 方法的字典的某些键在 *fieldnames* 中找不到,则可选参数 *extrasaction* 用于指定要执行的操作。如果将其设置为 `'raise'` (默认值),则会引发 [`ValueError`][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 ![2020092516084148.PNG][] names.csv ## [Pandas][] ## ### 读取-[read\_csv][read_csv] ### <table style="width:500px;"> 常用参数 <thead> <tr> <th>参数名</th> <th>类型</th> <th>含义</th> <th>举例</th> </tr> </thead> <tbody> <tr> <td><strong>filepath_or_buffer</strong></td> <td>str</td> <td>文件路径</td> <td>D://test.csv</td> </tr> <tr> <td><strong>sep</strong></td> <td>str,默认为英文逗号","</td> <td>指定的分隔符</td> <td>;</td> </tr> <tr> <td><strong>encoding</strong></td> <td>str</td> <td>编码</td> <td>utf-8</td> </tr> <tr> <td><strong>header</strong></td> <td>int</td> <td>数据标题</td> <td>1</td> </tr> <tr> <td><strong>usecols</strong></td> <td>[]</td> <td>返回哪几列数据</td> <td>[1,2]</td> </tr> <tr> <td><strong>engine</strong></td> <td>str,默认c,可选python</td> <td>引擎</td> <td>python</td> </tr> <tr> <td><strong>skiprows</strong></td> <td>[]、int</td> <td>要跳过的行号</td> <td>[2,3]、5</td> </tr> <tr> <td><strong>skipfooter</strong></td> <td>int,默认0(支持c引擎)</td> <td>从底部开始忽略</td> <td>1</td> </tr> </tbody> </table> 返回[DataFrame][] <table style="width:600px;"> 属性参数 <thead> <tr> <th style="vertical-align:top;width:231px;"><strong>属性</strong></th> <th style="vertical-align:top;width:143px;"><strong>类型</strong></th> <th style="vertical-align:top;width:219px;"><strong>含义</strong></th> </tr> </thead> <tbody> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.index.html#pandas.DataFrame.index" rel="nofollow"><code>index</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">RangeIndex</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">DataFrame的索引(行标签)。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.columns.html#pandas.DataFrame.columns" rel="nofollow"><code>columns</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">Index</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">DataFrame的列标签。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dtypes.html#pandas.DataFrame.dtypes" rel="nofollow"><code>dtypes</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">Series</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回DataFrame中的dtype。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.info.html#pandas.DataFrame.info" rel="nofollow"><code>info</code></a>(</span>[verbose, buf, max_cols, …]<span style="color:#333333;">)</span></p> </td> <td style="vertical-align:top;width:143px;"> </td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">打印DataFrame的简要摘要。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.select_dtypes.html#pandas.DataFrame.select_dtypes" rel="nofollow"><code>select_dtypes</code></a>(</span>[include, exclude]<span style="color:#333333;">)</span></p> </td> <td style="vertical-align:top;width:143px;"> </td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">根据列dtypes返回DataFrame列的子集。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.values.html#pandas.DataFrame.values" rel="nofollow"><code>values</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">numpy.adarray</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回DataFrame的Numpy表示形式。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.axes.html#pandas.DataFrame.axes" rel="nofollow"><code>axes</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">[index,column,dtype]</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回一个表示DataFrame轴的列表。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ndim.html#pandas.DataFrame.ndim" rel="nofollow"><code>ndim</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">int</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回一个表示轴数/数组维数的整数。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.size.html#pandas.DataFrame.size" rel="nofollow"><code>size</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">int</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回表示此对象中元素数量的int。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.shape.html#pandas.DataFrame.shape" rel="nofollow"><code>shape</code></a></span></p> </td> <td style="vertical-align:top;width:143px;">(行数,列数)</td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回一个表示DataFrame维数的元组。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.memory_usage.html#pandas.DataFrame.memory_usage" rel="nofollow"><code>memory_usage</code></a></span>([index, deep])</p> </td> <td style="vertical-align:top;width:143px;"> </td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">返回每列的内存使用情况(以字节为单位)。</span></p> </td> </tr> <tr> <td style="vertical-align:top;width:231px;"> <p><span style="color:#333333;"><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.empty.html#pandas.DataFrame.empty" rel="nofollow"><code>empty</code></a></span></p> </td> <td style="vertical-align:top;width:143px;"> </td> <td style="vertical-align:top;width:219px;"> <p><span style="color:#333333;">指示DataFrame是否为空。</span></p> </td> </tr> </tbody> </table> > 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 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZHlfa2lsbGVyOQ_size_16_color_FFFFFF_t_70][] 属性 读取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列 <table> 索引及迭代器 <thead> <tr> <th style="vertical-align:top;width:239px;"><strong>函数</strong></th> <th style="vertical-align:top;width:60px;">类型</th> <th style="vertical-align:top;width:312px;"><strong>含义</strong></th> <th style="vertical-align:top;width:255px;">举例</th> </tr> </thead> <tbody> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html#pandas.DataFrame.head" rel="nofollow"><code>head</code></a>(n)</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>返回前n行。</p> </td> <td style="vertical-align:top;width:255px;">head(-2)</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.at.html#pandas.DataFrame.at" rel="nofollow"><code>at</code></a>[index,column]</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>访问行/列标签对的单个值。</p> </td> <td style="vertical-align:top;width:255px;">at[2,'value']</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iat.html#pandas.DataFrame.iat" rel="nofollow"><code>iat</code></a>[index,column]</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>通过整数位置访问行/列对的单个值。</p> </td> <td style="vertical-align:top;width:255px;"> <p><code>iat[2,2]</code></p> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html#pandas.DataFrame.loc" rel="nofollow"><code>loc</code></a></p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>通过标签或布尔数组访问一组行和列。</p> </td> <td style="vertical-align:top;width:255px;"> <p> <code>loc[[True,False,True]]</code></p> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc" rel="nofollow"><code>iloc</code></a></p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>基于位置的纯基于整数位置的索引。</p> </td> <td style="vertical-align:top;width:255px;"> <p><code>iloc[1:3]</code></p> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.insert.html#pandas.DataFrame.insert" rel="nofollow"><code>insert</code></a>(loc, column, value[, …])</p> </td> <td style="vertical-align:top;width:60px;">None</td> <td style="vertical-align:top;width:312px;"> <p>将列插入到DataFrame中的指定位置。</p> </td> <td style="vertical-align:top;width:255px;"> <p> <code>insert(1, 'name', [10,11,12])</code></p> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.items.html#pandas.DataFrame.items" rel="nofollow"><code>items</code></a>()</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>遍历(列名,系列)对。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.items()</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iteritems.html#pandas.DataFrame.iteritems" rel="nofollow"><code>iteritems</code></a>()</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>遍历(列名,系列)对。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.items()</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.keys.html#pandas.DataFrame.keys" rel="nofollow"><code>keys</code></a>()</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>获取“信息轴”(有关更多信息,请参见索引)。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.keys()</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html#pandas.DataFrame.iterrows" rel="nofollow"><code>iterrows</code></a>()</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>将DataFrame行作为(索引,系列)对进行迭代。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.iterrows()</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.itertuples.html#pandas.DataFrame.itertuples" rel="nofollow"><code>itertuples</code></a>([index, name])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>以namedtuple的形式遍历DataFrame行。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.itertuples(index=False)</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.lookup.html#pandas.DataFrame.lookup" rel="nofollow"><code>lookup</code></a>(row_labels,col_labels)</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>DataFrame基于标签的“花式索引”功能。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.lookup([1, 2], ['type', 'value'])</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pop.html#pandas.DataFrame.pop" rel="nofollow"><code>pop</code></a>(item)</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>将某列从DataFrame中删除。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.pop('date')</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.tail.html#pandas.DataFrame.tail" rel="nofollow"><code>tail</code></a>([n])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>返回最后n行。</p> </td> <td style="vertical-align:top;width:255px;"> <p>csv_data.tail(2)</p> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.xs.html#pandas.DataFrame.xs" rel="nofollow"><code>xs</code></a>(key[, axis, level, drop_level])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>从Series / DataFrame返回横截面。</p> </td> <td style="vertical-align:top;width:255px;"> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.get.html#pandas.DataFrame.get" rel="nofollow"><code>get</code></a>(key[, default])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>从对象获取给定键的项目(例如:DataFrame列)。</p> </td> <td style="vertical-align:top;width:255px;"> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html#pandas.DataFrame.isin" rel="nofollow"><code>isin</code></a>(values)</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>DataFrame中的每个元素是否包含在值中。</p> </td> <td style="vertical-align:top;width:255px;">csv_data.isin([1, 2, 6])</td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.where.html#pandas.DataFrame.where" rel="nofollow"><code>where</code></a>(cond[, other, inplace, …])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>替换条件为False的值。</p> </td> <td style="vertical-align:top;width:255px;"> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mask.html#pandas.DataFrame.mask" rel="nofollow"><code>mask</code></a>(cond[, other, inplace, axis, …])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>替换条件为True的值。</p> </td> <td style="vertical-align:top;width:255px;"> </td> </tr> <tr> <td style="vertical-align:top;width:239px;"> <p><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query" rel="nofollow"><code>query</code></a>(expr[, inplace])</p> </td> <td style="vertical-align:top;width:60px;"> </td> <td style="vertical-align:top;width:312px;"> <p>使用布尔表达式查询DataFrame的列。</p> </td> <td style="vertical-align:top;width:255px;"> </td> </tr> </tbody> </table> ### 写入-[to\_csv][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]) print("name列插入为1列(10 11 12)\n", csv_data.values) print("column, serie") for column, serie in csv_data.items(): print(column) print(serie) break for column, serie in csv_data.iteritems(): print(column) print(serie) break print("信息轴:", csv_data.keys()) row = next(csv_data.iterrows())[1] print("第一行:", row) print("所有行:") for row in csv_data.itertuples(index=False): print(row) print('查找1行type列,2行value列', csv_data.lookup([1, 2], ['type', 'value'])) csv_data.pop('date') print('date列已删除\n', csv_data) print('最后两行\n', csv_data.tail(2)) print('数值是否为1/2/6\n', csv_data.isin([1, 2, 6])) # 写入csv csv_data.to_csv('demo.csv', header=True, index=False, columns=['type', 'value']) if __name__ == "__main__": pd_test() # 参考 # [csv文件读写][csv] 更多python相关内容:[【python总结】python学习框架梳理][python_python] 本人b站账号:[lady\_killer9][lady_killer9] 有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。 [csv]: https://docs.python.org/zh-cn/3.7/library/csv.html [20200925150541324.PNG]: /images/20221123/56db8de0b7a6418d926f1f45ac2899f7.png [OrderedDict]: https://docs.python.org/zh-cn/3.7/library/collections.html#collections.OrderedDict [20200925152108202.PNG]: /images/20221123/88d6dd4bb8a1487195b88c9918f4efad.png [20200925153451329.PNG]: /images/20221123/74f6fcbd52e44817b8bf3bafca694171.png [Link 1]: https://docs.python.org/zh-cn/3.7/library/collections.abc.html#module-collections.abc [ValueError]: https://docs.python.org/zh-cn/3.7/library/exceptions.html#ValueError [2020092516084148.PNG]: /images/20221123/71810aa36934425a85069b295957c85d.png [Pandas]: https://pandas.pydata.org/pandas-docs/stable/reference/io.html#excel [read_csv]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html#pandas.read_csv [DataFrame]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZHlfa2lsbGVyOQ_size_16_color_FFFFFF_t_70]: /images/20221123/718eaf423737468e80d96c17dd17ffc3.png [to_csv]: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html [python_python]: https://blog.csdn.net/lady_killer9/article/details/108763489 [lady_killer9]: https://space.bilibili.com/374432302
相关 文件操作 一、文件操作。 1、为什么要学习文件操作? 程序运行时产生的数据属于临时数据,程序一旦运行结束都会释放了。 通过文件可以将数据持久化。 C++中对文件操作需要包 偏执的太偏执、/ 2022年12月27日 11:26/ 0 赞/ 139 阅读
相关 文件操作 注意下面代码所产生的问题。 这一段是读文件,没有什么问题。 define _CRT_SECURE_NO_WARNINGS include<stdio.h> 喜欢ヅ旅行/ 2022年07月19日 02:38/ 0 赞/ 215 阅读
相关 文件操作 1.系统调用 所谓系统调用,是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。 2.文件描述符 文 短命女/ 2022年07月16日 10:44/ 0 赞/ 232 阅读
相关 文件操作 在文件打印三个hello,每打印一个换一行 include <stdio.h> include <stdlib.h> includ 怼烎@/ 2022年07月12日 23:49/ 0 赞/ 362 阅读
相关 文件操作 能调用方法的一定是对象 打开文件的模式有: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 曾经终败给现在/ 2022年05月21日 06:53/ 0 赞/ 266 阅读
相关 文件操作 能调用方法的一定是对象 打开文件的模式有: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 r,只读模 深碍√TFBOYSˉ_/ 2022年05月20日 01:24/ 0 赞/ 262 阅读
相关 文件操作 include <cstdio> include <cstdlib> include <conio.h> int main() { 不念不忘少年蓝@/ 2022年01月28日 12:31/ 0 赞/ 306 阅读
相关 文件操作 1. r模式 1.1 全部读取 我们先来建一个文件,放到D盘根目录下,文件内容如图 ![1542801-20181227153807057-383845746.p 青旅半醒/ 2022年01月07日 04:05/ 0 赞/ 417 阅读
相关 文件操作 计算机文件:硬盘中一块储存空间(虚拟的文件) 文件操作:根据文件名来操作硬盘的那块存储空间,操作方式为 读read,写write 文件的模式: r: 读 Bertha 。/ 2022年01月07日 01:21/ 0 赞/ 306 阅读
相关 文件操作 1.文件操作初识 操作文件的方式: f = open("文件路径","mode="模式",encoding = "编码) open: 调用操作系统打开文件. mod 灰太狼/ 2021年10月19日 12:14/ 0 赞/ 368 阅读
还没有评论,来说两句吧...