数据分析 — Pandas 数据加载、存储和清洗

一、文件读取

1、常见文件读取函数

函数 说明
read_csv 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号。
read_table 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(‘\t’)。
read_excel 从 Excel XLS 或 XLSX file 读取表格数据。
read_json 读取 JSON(JavaScript Object Notation)字符串中的数据。
read_sql (使用 SQLAlchemy)读取 SQL 查询结果为 pandas 的 DataFrame。
read_html 读取 HTML 文档中的所有表格。
read_hdf 读取 pandas 写的 HDF5 文件。
read_clipboard 读取剪贴板中的数据,可以看做 read_table 的剪贴板版。在将网页转换为表格时很有用。
read_msgpack 二进制格式编码的 pandas 数据。
read_pickle 读取 Python pickle 格式中存储的任意对象。
read_sas 读取存储于 SAS 系统自定义存储格式的 SAS 数据集。
read_fwf 读取定宽列格式数据(也就是说,没有分隔符)。
read_stata 读取 Stata 文件格式的数据集。
read_feather 读取 Feather 二进制文件格式。

2、read_csv()

read_csv() 是 Pandas 库中的函数,用于从 CSV 文件中读取数据并创建一个 DataFrame。

CSV 格式比 Excel 能存储更多数据,CSV 读取性能比 Excel 会高很多。

参数:

  • filepath_or_buffer:这是必选参数,指定要读取的 CSV 文件的路径或 URL。可以是一个字符串,也可以是类似文件对象的可迭代对象(例如文件句柄)。

  • sep:指定 CSV 文件中的字段分隔符。默认值是逗号(,),但可以根据文件的实际分隔符来设置这个参数,例如制表符(\t)或分号(;)。

  • delimiter:sep 的别名,用于指定字段分隔符。

  • header:指定用作列名的行号。通常为整数,如果没有列名行,可以设置为 None。默认值为 0,表示第一行包含列名。

  • names:如果没有列名行,可以通过此参数提供列名的列表。与 header=None 一起使用。

  • index_col:用于指定哪一列作为 DataFrame 的索引列。可以是列名、列号或多列的组合。

  • usecols:指定要读取的列,可以是列名的列表或列号的列表。用于仅读取感兴趣的列,而不是整个文件。

  • skiprows:指定要跳过的行数,通常用于跳过文件中的标题或注释行。

  • nrows:指定要读取的行数,可以用于限制读取的数据量。

  • dtype:用于指定列的数据类型的字典,可以帮助优化内存使用和数据类型转换。

  • encoding:指定 CSV 文件的字符编码,常见的编码包括 “utf-8”、“ISO8859-1” 等。

  • parse_dates:指定要解析为日期时间的列,可以是列名或列号的列表。

  • date_parser:自定义日期时间解析函数,用于将字符串解析为日期时间对象。

  • na_values:指定要视为缺失值的标记值列表,例如 “NA”、“N/A”、“null” 等。

  • skipinitialspace:指定是否跳过字段值前的空白字符,默认为 False。

  • skip_blank_lines:指定是否跳过空白行,默认为 True。

  • quotechar:指定用于引用字段值的字符,通常为双引号或单引号。

  • compression:指定文件的压缩格式,例如 “gzip”、“bz2”、“xz” 等。

  • thousands:用于指定千位分隔符的字符。

常用参数案例:

1、文件路径 path 和编码方式 encoding

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,encoding='ANSI')
print(data)

在这里插入图片描述

查看编码方式 encoding
将文件选择记事本方式打开,另存为时有编码方式

2、设置表头 header

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
# header=0 表示物理的第一行设置为表头
data = pd.read_csv(path,header=0,encoding='ANSI')
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
# header=1 表示物理的第二行设置为表头
data = pd.read_csv(path,header=1,encoding='ANSI')
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
# header=None 表示源数据不设置表头
data = pd.read_csv(path,header=None,encoding='ANSI')
print(data)

在这里插入图片描述

3、设置索引列 index_col

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,index_col=1,encoding='ANSI')
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,index_col='日期',encoding='ANSI')
print(data)

在这里插入图片描述

4、取部分列 usecols

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,usecols=[0,2,3],encoding='ANSI')
print(data)

在这里插入图片描述

5、元素的类型 dtype

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,encoding='ANSI')
# 查看类型
print(type(data))  # <class 'pandas.core.frame.DataFrame'>

# 查看元素类型
print(data.dtypes)
# 日期      object
# 股票0    float64
# 股票1    float64
# 股票2    float64
# 股票3    float64
# 股票4    float64
# dtype: object

# 查看详细信息摘要
print(data.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 10000 entries, 0 to 9999
# Data columns (total 6 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   日期      10000 non-null  object
#  1   股票0     10000 non-null  float64
#  2   股票1     10000 non-null  float64
#  3   股票2     10000 non-null  float64
#  4   股票3     10000 non-null  float64
#  5   股票4     10000 non-null  float64
# dtypes: float64(5), object(1)
# memory usage: 468.9+ KB
# None
data2 = pd.read_csv(path,dtype={
   '股票1':str},encoding='ANSI')
# 查看详细信息摘要
print(data2.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 10000 entries, 0 to 9999
# Data columns (total 6 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   日期      10000 non-null  object
#  1   股票0     10000 non-null  float64
#  2   股票1     10000 non-null  object
#  3   股票2     10000 non-null  float64
#  4   股票3     10000 non-null  float64
#  5   股票4     10000 non-null  float64
# dtypes: float64(4), object(2)
# memory usage: 468.9+ KB
# None

6、设置某列为日期格式 parse_dates

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\exa5.csv'
data = pd.read_csv(path,parse_dates=['日期'],encoding='ANSI')
print(data.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 10000 entries, 0 to 9999
# Data columns (total 6 columns):
#  #   Column  Non-Null Count  Dtype         
# ---  ------  --------------  -----         
#  0   日期      10000 non-null  datetime64[ns]
#  1   股票0     10000 non-null  float64       
#  2   股票1     10000 non-null  float64       
#  3   股票2     10000 non-null  float64       
#  4   股票3     10000 non-null  float64       
#  5   股票4     10000 non-null  float64       
# dtypes: datetime64[ns](1), float64(5)
# memory usage: 468.9 KB
# None

7、把指定值变成空值 na_values

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data1.csv'
data = pd.read_csv(path,na_values=[2.52],encoding='ANSI')
print(data)

在这里插入图片描述

3、read_table()

参数同 read_csv(), read_csv() 和 read_table() 之间的区别主要是函数名称,默认分隔符的历史设置。

在当前版本的 Pandas 中,它们几乎可以互相替代,只需根据实际数据文件的分隔符来设置 sep 参数即可。

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data1.csv'
data = pd.read_table(path,encoding='ANSI')
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data1.csv'
# 可以读取 csv 文件
data = pd.read_table(path,encoding='ANSI',sep=',')
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data2.txt'
data = pd.read_table(path)
print(data)

在这里插入图片描述

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data2.txt'
# 如果分裂空格个数不一致,可使用正则方式进行匹配
data = pd.read_table(path,sep='\s+')
print(data)

在这里插入图片描述

4、read_excel()

import pandas as pd  # 导入 Pandas 库并使用别名 pd
path = r'F:\data\data3.xlsx'
# 读取表格指定工作表数据
# sheet_name='评论' 或 sheet_name=1
data = pd.read_excel(path,sheet_name='评论')
print(data)

在这里插入图片描述

5、read_json()

// F:\data\data4.json
[
    {
   
    "id": "A001",
    "name": "百度",
    "url": "www.baidu.com"
    },
    {
   
    "id": "A002",
    "name": "谷歌",
    "url": "www.google.com"
    },
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值