当前位置: 首页 > article >正文

数据分析基础之《pandas(5)—文件读取与存储》

一、概述

1、我们的数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多文件格式,如CSV、SQL、XLS、JSON、HDF5

二、CSV

1、读取csv文件
read_csv(filepath_or_buffer, sep=',', delimiter=None)
说明:
filepath_or_buffer:文件路径
usecols:如果一个数据集中有很多列,但是我们在读取的时候只想要使用到的列,我们就可以使用这个参数

# 读取文件,并且指定读取open,high,close列
data = pd.read_csv("./stock_day.csv", usecols=['open','high','close'])

data

2、如果CSV文件直接是数据,没有字段
默认将第一行作为字段,需要加上names参数

3、写入csv文件
to_csv(path_or_buf=None, sep=',', columns=None, header=True, index=True, index_label=None, mode='w', encoding=None)
说明:
path_or_buf:写入的路径
sep:分隔符
columns:列的标题
mode:w重写,a追加
index:是否写进,行索引值
header:是否写进,列索引值

# 保存open列数据
data[:10].to_csv('./test.csv', columns=['open'])

# 读取、查看结果
pd.read_csv('./test.csv')

会发现将索引写入到文件当中,变成单独的一列数据。如果需要删除,可以指定index参数,删除原来的文件,重新保存一次

# 保存open列数据
data[:10].to_csv('./test.csv', columns=['open'], index=False)

# 读取、查看结果
pd.read_csv('./test.csv')

三、HDF5

1、HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame
所以hdf5格式可以认为是存储3维数据的文件
key1 dataframe1二维数据
key2 dataframe2二维数据

2、读取hdf5文件
read_hdf5(path_or_buf, key=None, **kwargs)
说明:
path_or_buf:文件路径
key:读取的键
mode:打开文件的模式

3、写入hdf5文件
to_hdf5(path_or_buf, key, **kwargs)

四、JSON

1、读取json文件
将JSON格式转换成默认的DataFrame格式
read_json(path_or_buf=None, orient=None, typ='frame', lines=False)
说明:
path_or_buf:文件路径
orient:指定json字符串的格式(一般用records)
    split:{index -> [index], columns -> [columns], data -> [data]}
    records:[{column -> value}, ..., {column -> value}]
    index:{index -> {column -> value}}
    columns:{column -> {index -> value}}
    values:just the values array
lines:按照每行读取json对象
typ:指定转换成的对象类型series或者dataframe

# 读取JSON
sa = pd.read_json('./Sarcasm_Headlines_Dataset.json', orient='records', lines=True)

sa

文件下载地址:https://www.kaggle.com/datasets/rmisra/news-headlines-dataset-for-sarcasm-detection

2、写入json文件
to_json(path_or_buf=None, orient=None, lines=False)
说明:
path_or_buf:文件地址
orient:存储的json形式,{'split','records','index','columns','values'}
lines:一个对象存储为一行,如果False所有对象都写在一个[]中

# 写入JSON
sa.to_json('test.json', orient='records', lines=True)

五、拓展

1、数据量很大优先选择用HDF5文件存储
(1)HDF5在存储的是支持压缩,使用的方式是blosc,这个是速度最快的,也是pandas默认支持的
(2)使用压缩可以提高磁盘利用率,节省空间
(3)HDF5还是跨平台的,可以轻松迁移到hadoop上面

六、小结
pandas基础数据处理
    pandas介绍
        什么是pandas:数据处理工具
        为什么使用pandas
            便捷的数据处理能力
            集成了numpy,matplotlib
            读取文件方便
        三大核心数据结构
            series:带索引的一维数组
                属性
                    index
                    values
            dataframe:带索引的二维数组
                属性
                    shape
                    index
                    columns
                    values
                    T
                常用方法
                    head()
                    tail()
                索引设置
                    修改行列索引
                    重设索引
                    设置索引
            panel:废弃
    基本操作
        索引操作
            直接索引:必须先列后行
            .loc:按名字进行索引
            .iloc:按数字进行索引
            .ix:组合索引(废弃)
        赋值操作
        排序
            按内容排序:sort_values()
            按索引排序:sort_index()
    运算
        算术运算
        逻辑运算
            逻辑运算符 & 布尔索引
            函数
                query()
                isIn()
        统计运算
            获取综合的统计指标
            具体的统计指标
            累计统计指标
        自定义运算-df.apply(func,axis=)
    画图
        df.plot()
        sr.plot()
    IO操作
        csv
            pd.read_csv()
                usecols
                names
            df、sr.to_csv()
                columns
                index
                header
                mode
        hdf5
            有键
        json
            pd.read_json()
                path
                records
                lines
            df.to_json()
                records
                lines
 


http://www.kler.cn/a/229683.html

相关文章:

  • MapReduce完整工作流程
  • Leetcode 3418. Maximum Amount of Money Robot Can Earn
  • IntelliJ IDEA中Maven项目的配置、创建与导入全攻略
  • 【硬件介绍】Type-C接口详解
  • 研究线段树的最大子段和
  • GPT-1, GPT-2, GPT-3, GPT-3.5, GPT-4论文内容解读
  • [香橙派开发系列]使用蓝牙和手机进行信息的交换
  • Redis(十三)缓存双写一致性策略
  • 《【python】staticmethod与classmethod深度机制解析——要知其所以然》学习笔记
  • 十六、Vben框架table内部合并行
  • 88 SRC挖掘-拿下CNVD证书开源闭源售卖系统
  • 倒计时64天
  • 肯尼斯·里科《C和指针》第12章 使用结构和指针(1)链表
  • SpringBoot:配置相关知识点
  • nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(上)
  • pytorch的安装步骤
  • QT Linux下无法使用CTRL+ALT+P快捷键,不生效
  • 华为云账号注销之后账号下的域名丢了怎么办?记录一次域名转移权限的经历
  • Dijkstra算法(求最短路)
  • 算法刷题day06
  • 什么是大模型
  • Python 的 sys 模块常用方法
  • ubuntu开机报错/dev/nume0n1p2:clean
  • 《MySQL》超详细笔记
  • 读写锁ReentrantReadWriteLockStampLock详解