加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

什么是Python中Pandas文件操作和读取CSV参数的方法

发布时间:2023-03-20 11:29:54 所属栏目:教程 来源:
导读:一、Pandas 读取文件
当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法,针对不同的文件格式,有以下几种:

(1) read_csv() 用于读取文本
一、Pandas 读取文件
当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法,针对不同的文件格式,有以下几种:

(1) read_csv() 用于读取文本文件。

(2) read_excel() 用于读取文本文件。

(3) read_json() 用于读取 json 文件。

(4) read_sql_query() 读取 sql 语句的。

其通用的流程如下:

(1) 导入库 import pandas as pd。

(2) 找到文件所在位置(绝对路径 = 全称)(相对路径 = 和程序在同一个文件夹中的路径的简称)。

(3) 变量名 = pd.读写操作方法(文件路径,具体的筛选条件,……)。

二、CSV 文件读取
CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。

将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。

下面进行实例演示,源数据如下:

Python中Pandas文件操作和读取CSV参数的方法是什么

首先,我们对 CSV 文件进行读取,可以通过相对路径,也可以通过 os 动态取得绝对路径 os.getcwd() os.path.json。

df = pd.read_csv("./data/my_csv.csv")
print(df,type(df))
#   col1 col2  col3    col4      col5
#0     2    a   1.4   apple  2022/1/1
#1     3    b   3.4  banana  2022/1/2
#2     6    c   2.5  orange  2022/1/5
#3     5    d   3.2   grape  2022/1/7 <class 'pandas.core.frame.DataFrame'>
我们可以通过 os.getcwd() 读取文件的存储路径。

import os
os.getcwd()
#'C:\\Users\\CQB\\Desktop\\内蒙农业大学数据分析教案和代码\\第16天'
其语法模板如下:

read_csv(filepath_or_buffer, sep=',',  header='infer', names=None, index_col=None, usecols=None, squeeze=None, prefix=None, 
mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, 
skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, 
skip_blank_lines=True, parse_dates=None, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False,
cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None, 
quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors='strict', dialect=None, 
error_bad_lines=None, warn_bad_lines=None, on_bad_lines=None, delim_whitespace=False, low_memory=True, memory_map=False, 
float_precision=None, storage_options=None)
1. 基本参数
(1) filepath_or_buffer(数据输入的路径):可以是文件路径、可以是 URL,也可以是实现 read 方法的任意对象。这个参数,就是我们输入的第一个参数。

我们可以直接 read_csv 读取我们想要的文件。

import pandas as pd
pd.read_csv(r"data\students.csv")
#id    name    address    gender    birthday
#0    1    朱梦雪    地球村    女    2004/11/2
#1    2    许文博    月亮星    女    2003/8/7
#2    3    张兆媛    艾尔星    女    2004/11/2
#3    4    付延旭    克哈星    男    2003/10/11
#4    5    王杰    查尔星    男    2002/6/12
#5    6    董泽宇    塔桑尼斯    男    2002/2/12
还可以是一个 URL,如果访问该 URL 会返回一个文件的话,那么 pandas 的 read_csv函 数会自动将该文件进行读取。比如:我们服务器上放的数据,将刚才的文件返回。

但需要注意的是,他需要网络请求,因此读取文件比较慢。
里面还可以是一个 _io.TextIOWrapper,其中,pandas 默认使用 utf-8 读取文件,比如:

f = open(r"data\students.csv", encoding="utf-8")
pd.read_csv(f)
#id    name    address    gender    birthday
#0    1    朱梦雪    地球村    女    2004/11/2
#1    2    许文博    月亮星    女    2003/8/7
#2    3    张兆媛    艾尔星    女    2004/11/2
#3    4    付延旭    克哈星    男    2003/10/11
#4    5    王杰    查尔星    男    2002/6/12
#5    6    董泽宇    塔桑尼斯    男    2002/2/12
(2) sep:读取 csv 文件时指定的分隔符,默认为逗号。注意:csv 文件的分隔符和我们读取 csv 文件时指定的分隔符一定要一致。

import pandas as pd
pd.read_csv(r"data\students_step.csv")
#id|name|address|gender|birthday
#0    1|朱梦雪|地球村|女|2004/11/2
#1    2|许文博|月亮星|女|2003/8/7
#2    3|张兆媛|艾尔星|女|2004/11/2
#3    4|付延旭|克哈星|男|2003/10/11
#4    5|王杰|查尔星|男|2002/6/12
#5    6|董泽宇|塔桑尼斯|男|2002/2/12
由于指定的分隔符和 csv 文件采用的分隔符不一致,因此多个列之间没有分开,而是连在一起了。 所以,我们需要将分隔符设置成 \t 才可以。

df = pd.read_csv(r"data\students_step.csv", sep="|")
df
#id    name    address    gender    birthday
#0    1    朱梦雪    地球村    女    2004/11/2
#1    2    许文博    月亮星    女    2003/8/7
#2    3    张兆媛    艾尔星    女    2004/11/2
#3    4    付延旭    克哈星    男    2003/10/11
#4    5    王杰    查尔星    男    2002/6/12
#5    6    董泽宇    塔桑尼斯    男    2002/2/12
(3) delim_whitespace:默认为 False,设置为 True 时,表示分割符为空白字符,可以是空格、\t 等等。不管分隔符是什么,只要是空白字符,那么可以通过 delim_whitespace=True 进行读取。如下,我们对 delim_whitespace 不设置,也就是默认为 False,会发现读取有点问题。

df = pd.read_csv(r"data\students_whitespace.txt", sep=" ")
df
#id    name    address    gender    birthday
#0    1    朱梦雪    地球村    女    2004/11/2
#1    2    许文博\t月亮星    女    2003/8/7    NaN
#2    3    张兆媛    艾尔星    女    2004/11/2
#3    4    付延旭    克哈星    男    2003/10/11
#4    5    王杰\t查尔星    男    2002/6/12    NaN
#5    6    董泽宇\t塔桑尼斯    男    2002/2/12    NaN
对此,我们将 delim_whitespace 设置为 True,便会得到我们想要的读取结果。

df = pd.read_csv(r"data\students_whitespace.txt", delim_whitespace=True)
df
#id    name    address    gender    birthday
#0    1    朱梦雪    地球村    女    2004/11/2
#1    2    许文博    月亮星    女    2003/8/7
#2    3    张兆媛    艾尔星    女    2004/11/2
#3    4    付延旭    克哈星    男    2003/10/11
#4    5    王杰    查尔星    男    2002/6/12
#5    6    董泽宇    塔桑尼斯    男    2002/2/12
(4) header:用作列名的行号,以及数据的开头。

默认行为是推断列名:如果没有传递任何名称,则该行为与 header=0 相同,并且从文件的第一行推断列名,如果显式传递列名,则该行为与 header=None 相同。

显式传递 header=0 以替换现有名称。标题可以是整数列表,指定列上多索引的行位置,例如 [0,1,3]。未指定的中间行将被跳过(例如,本例中跳过 2 行)。

这里需要注意,如果 skip_blank_lines=True,此参数将忽略注释行和空行,因此 header=0 表示数据的第一行,而不是文件的第一行。

(5) names:当 names 没被赋值时,header 会变成 0,即选取数据文件的第一行作为列名;当 names 被赋值,header 没被赋值时,那么 header 会变成 None。如果都赋值,就会实现两个参数的组合功能。

(a) names 没有被赋值,header 也没赋值:

这种情况下,header 为 0,即选取文件的第一行作为表头。

 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章