第二章 解析python中的pandas.read_csv(),pandas.read_json(),pandas.read_excel()(工具)

118 篇文章 3 订阅
58 篇文章 2 订阅

pandas库简介

官方网站
pandas是一个Python包,并且它提供快速,灵活和富有表现力的数据结构。这样当我们处理"关系"或"标记"的数据(一维和二维数据结构)时既容易又直观。
pandas是我们运用Python进行实际、真实数据分析的基础,同时它是建立在NumPy之上的。

一 csv文件格式

函数介绍

pandas.csv() 函数将逗号分离的值 (csv) 文件读入数据框架。还支持可选地将文件读入块或将其分解。源文件

函数参数以及含义

输入
参数名功能以及含义
filepath_or_buffer字符串。任何有效的字符串路径都可以,网址也行。
sep字符串,表示分隔符,默认为’,’ .。一个字符及以上都可以,注意如果是转义字符要加’’
delimiter字符串,sep的别名,默认None
headerint或者int列表,默认由推断出来。这是用于规定列名的行号。
names类似于数组结构,选择性使用。这是要使用的列名称列表,与header共同使用。
index_col整数或者字符串或者整数/字符串列表。指定用作的行标签的列。
usecols列表,可用可不用。功能是返回列的子集。
squeeze布尔值,默认为False。如果解析的数据仅包含一列,则返回一个Series
prefix字符串,选择性使用。没有标题时要添加到列号的前缀
mangle_dupe_cols布尔值,默认为True。重复的列将被指定为“ X”,“ X.1”,……“ X.N”,而不是“ X”……“ X”。如果列中的名称重复,则False将导致数据被覆盖。
dtype类型名称或者类型列的字典,选择性使用。数据或列的数据类型。
engine{‘c’, ‘python’},选择性使用。要使用的解析器引擎。C引擎速度更快,而python引擎当前功能更完善。
converters字典,选择性使用。转换器,用于转换某些列中的值的函数的字典。键可以是整数或列标签。
true_value列表,选择性使用。视为True的值
false_values列表,选择性使用。视为False的值
skipinitialspace布尔值,默认为False。在定界符后跳过空格。
skiprows列表或者整数,选择性使用。在文件开始处要跳过的行号(索引为0)或要跳过的行数(整数)。
skipfooter整数,默认为0。要跳过的文件底部的行数(不支持engine =‘c’)。
nrows整数,选择性使用。要读取的文件行数。对于读取大文件很有用。
na_values标量,字符串,类似列表的字典,选择性使用。识别为NA / NaN的其他字符串。如果dict通过,则为特定的每列NA值。默认情况下,以下值解释为NaN:’’,’#N / A’,’#N / AN / A’,’#NA’,’-1.#IND’,’-1.#QNAN’, ‘-NaN’,’-nan’,‘1.#IND’,‘1.#QNAN’,’’,‘N / A’,‘NA’,‘NULL’,‘NaN’,‘n / a’,‘nan’,‘null’。
keep_default_na布尔值,默认为True。解析数据时是否包括默认的NaN值。
na_filter布尔值,默认为True。检测缺失值标记(空字符串和na_values的值)。请注意,如果将na_filter传递为False,则将忽略keep_default_na和 na_values参数。
verbose布尔值,默认为False。指示放置在非数字列中的NA值的数量。
skip_blank_lines布尔值,默认为True。如果为True,跳过空白行,并且不解释为NaN值。
parse_dates布尔值,整数列表,名称列表,列表或字典的列表。默认为False。功能是解析为时间。
infer_datetimes_format布尔值,默认为False。如果启用True和parse_dates,则pandas将尝试推断列中日期时间字符串的格式,并且如果可以推断出日期格式,就会切换到更快的解析它们的方法。
keep_date_col布尔值,默认为False。如果True和parse_dates指定合并多个列,则保留原始列。
date_parser函数,选择性使用。用于将字符串列序列转换为日期时间实例数组的函数。
dayfirst布尔值,默认为False。DD / MM格式的日期,国际和欧洲格式。
cache_dates布尔值,默认为True。如果为True,则使用唯一的转换日期缓存来应用datetime转换。
iterator布尔值,默认为False。返回TextFileReader对象以进行迭代或使用获取块 get_chunk()。
chunksize整数,选择性使用。返回TextFileReader对象以进行迭代。
compression{‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None},默认为’infer’。用于对磁盘数据进行即时解压缩。设置为“无”将不进行解压缩。
thousands字符串,选择性使用。千位分隔符。
decimal字符串,默认为’.’。识别为小数点的字符(例如,对于欧洲数据,请使用“,”)。
lineterminator长度为1的字符串,选择性使用。用于将文件分成几行的字符。仅对C解析器有效。
quotechar长度为1的字符串,选择性使用。用于表示引用项目的开始和结束的字符。
quoting整数或者csv.QUOTE_* 实例,默认为0。每个csv.QUOTE_*常量的控制字段引用行为。使用QUOTE_MINIMAL(0),QUOTE_ALL(1),QUOTE_NONNUMERIC(2)或QUOTE_NONE(3)中的一种。
doublequote布尔值,默认为True。如果指定quotechar而未使用引号QUOTE_NONE,则指示是否将一个字段内的两个连续的quotechar元素解释为单个quotechar元素。
escapechar长度为1的字符串,选择性使用。 一字符字符串,用于转义其他字符。
comment字符串,选择性使用。指示不应分析行的其余部分。如果在一行的开头找到该行,则将完全忽略该行。此参数必须是单个字符。
encoding字符串,选择性使用。读/写时用于UTF的编码(例如’utf-8’)。
dialect字符串或者csv.Dialect,选择性使用。如果提供的话,该参数将覆盖为以下参数的值(默认或不):delimiter, doublequote, escapechar, skipinitialspace, quotechar, and quoting。
error_bad_lines布尔值,默认为True。 默认情况下,具有太多字段的行(例如,带有太多逗号的csv行)将引发异常,并且不会返回任何DataFrame。如果为False,则这些“坏行”将从返回的DataFrame中删除。
warn_bad_lines布尔值,默认为True。如果error_bad_lines为False,而warn_bad_lines为True,则将为每个“坏行”输出警告。
delim_whiterspace布尔值,默认为False。指定是否将空格(例如或)用作分隔符。
low_memory布尔值,默认为True。在内部对文件进行分块处理,从而在解析时减少了内存使用。
memory_map布尔值,默认为False。如果为filepath_or_buffer提供了文件路径,则将文件对象直接映射到内存中,然后直接从那里访问数据。使用此选项可以提高性能,因为不再有任何I / O开销。
float_precision字符串,选择性使用。指定C引擎应将哪个转换器用于浮点值。
storage_option字典,选择性使用。解析特殊的URL。如果为该参数提供非fsspec URL,则会引发错误。
返回

DataFrame:将逗号分隔值(csv)文件读取到DataFrame中。

函数使用实例

终端使用范例:

>>>import pandas as pd
>>>pd.read_csv('data.csv')

代码行使用范例

#导入pandas库,并取别名为pd
import pandas as pd
#books.csv与项目不在同一文件夹下使用绝对路径,分隔符为';',出错的行直接跳过,编码方式使用"latin-1",变量books是DataFrame数据结构
books = pd.read_csv('D:\coder\python_program\Books.csv', sep=';', error_bad_lines = False, encoding="latin-1")
#查看books的行和列
print(books.shape)
#查看
print(list(books.columns))
print(books.head())

二 json文件格式

函数

pd.read_json(
    path_or_buf=None,  # 文件路径或类文件对象,可以是文件名、URL地址、文件型对象或类文件对象
    orient=None,  # 指示数据的方向,可以是'split'、'records'、'index'、'columns'或'values'
    typ='frame',  # 返回的数据类型,可以是'frame'、'series'、'split'、'records'、'index'
    dtype=True,  # 强制列的数据类型,如果为True则尝试推断数据类型
    convert_axes=True,  # 尝试将行转换为列,列转换为行
    convert_dates=True,  # 尝试将日期转换为特定格式
    keep_default_dates=True,  # 保留默认的日期处理方式
    numpy=False, precise_float=False, date_unit=None, encoding=None, lines=False, chunksize=None, compression='infer',
)

用法示例

import pandas as pd

# 从JSON文件中读取数据
df = pd.read_json('文件路径/文件名.json')

# 指定数据的方向
df = pd.read_json('文件路径/文件名.json', orient='records')  # 指定数据的方向为'records'

# 指定返回的数据类型
df = pd.read_json('文件路径/文件名.json', typ='frame')  # 返回DataFrame类型的数据
series = pd.read_json('文件路径/文件名.json', typ='series')  # 返回Series类型的数据

# 强制列的数据类型
df = pd.read_json('文件路径/文件名.json', dtype={'column1': str, 'column2': float})  # 强制指定列的数据类型

# 尝试将日期转换为特定格式
df = pd.read_json('文件路径/文件名.json', convert_dates={'date_column': 'datetime'})  # 尝试将名为'date_column'的列转换为日期格式

三 excel文件格式

函数

pd.read_excel(
    io,  # 文件路径或类文件对象,可以是Excel文件的路径、URL、文件型对象,或者类文件对象
    sheet_name=0,  # 要读取的工作表的名称或索引,可以是字符串、整数或列表
    header=0,  # 用作列名的行号,默认为0,表示第一行
    names=None,  # 指定列名的列表,如果数据文件中不包含列名,则应明确传递None
    index_col=None,  # 指定作为行索引的列
    usecols=None,  # 选择需要读取的列
    squeeze=False,  # 如果数据只包含一列,则返回Series
    dtype=None,  # 指定每列的数据类型
    engine=None,  # 使用的分析引擎,对于不同的引擎可指定不同的值
    converters=None,  # 将指定列的数据转换为特定格式的函数,例如将字符串转换为日期
    true_values=None, false_values=None,  # 用于指定True和False的值
    skiprows=None, skipfooter=0,  # 要跳过的行数,以及文件末尾要跳过的行数
    na_values=None,  # 指定用作NA值的附加字符串
    keep_default_na=True, na_filter=True,  # 控制缺失值的处理方式
    verbose=False,  # 控制更多信息的显示
    parse_dates=False,  # 尝试解析日期数据
    date_parser=None,  # 用于解析日期的函数
    thousands=None,  # 千位分隔符
    comment=None,  # 指定注释标识
    skip_blank_lines=True,  # 控制空行的处理方式
    encoding=None,  # 指定字符编码
    squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds,
)

用法

当使用`pd.read_excel()`时,您可以按以下示例进行操作:

```python
import pandas as pd

# 从Excel文件中读取数据
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1')  # 读取Excel文件中名为Sheet1的工作表

# 读取特定列和跳过行
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', usecols=['Column1', 'Column2'], skiprows=2)

# 解析日期数据
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', parse_dates=['DateColumn'])

# 指定行索引
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', index_col='ID')

# 指定数据类型
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', dtype={'Column1': str, 'Column2': float})

# 跳过末尾的行
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', skipfooter=2)

# 从Excel文件中读取特定列的数据
df = pd.read_excel('文件路径/文件名.xlsx', sheet_name='Sheet1', usecols=['Column1', 'Column2', 'Column5'])

四 三种文件的打开,读取,写入,保存

import json
import csv
import os
import shutil

# 创建txt文件
def create_txt(path):
    with open(path, 'w'):
        pass
# 读取txt文件
def read_txt(path):
    with open(path, 'r') as f:
        lines = f.readlines()
    return lines
# 写入txt文件
def write_txt(path, lines):
    with open(path, 'w') as f:
        for line in lines:
            f.write(line)
# 保存txt文件
def save_txt(path, lines):
    with open(path, 'w') as f:
        for line in lines:
            f.write(line)


# 创建json文件
def create_json(path):
    with open(path, 'w', encoding='utf-8'):
        pass
# 读取json文件
def read_json(path):
    with open(path, 'r', encoding='utf-8') as f:
        lines = json.load(f)
    return lines
# 写入json文件
def write_json(path, lines):
    with open(path, 'w', encoding='utf-8') as f:
        json.dump(lines, f, indent=4)
# 保存json文件
def save_json(path, lines):
    with open(path, 'w', encoding='utf-8') as f:
        json.dump(lines, f, indent=4)


# 创建csv文件
def create_csv(path):
    with open(path, 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['id', 'name'])
# 读取csv文件
def read_csv(path):
    with open(path, 'r', newline='') as f:
        reader = csv.reader(f)
        lines = [row for row in reader]
    return lines
# 写入csv文件
def write_csv(path, lines):
    with open(path, 'w', newline='') as f:
        writer = csv.writer(f)
        for line in lines:
            writer.writerow(line)
# 保存csv文件
def save_csv(path, lines):
    with open(path, 'w', newline='') as f:
        writer = csv.writer(f)
        for line in lines:
            writer.writerow(line)


# 删除-创建
def _check_dir_rm(_path):
    if os.path.exists(_path):
        shutil.rmtree(_path)  # 删除已存在的目录及其内容
    os.mkdir(_path)  # 创建目录

def _check_dir(_path):
    if os.path.exists(_path):
        os.mkdir(_path)  # 不存在则创建目录
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小酒馆燃着灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值