• Pandas 处理CSV文件数据集(五)


    一、CSV 文件

        CSV 文件(逗号分隔值文件)是一种纯文本文件,使用特定的结构来排列表格数据。由于是一个纯文本文件,所以只能包含实际的文本数据,换句话说就是可打印的 ASCII 或 Unicode 字符。

       数据是用逗号分隔的,通常第一行是数据列的名称,之后的每一行都是实际数据,并且受文件大小限制。通常分隔符( , )逗号不是唯一使用的。其他流行的分隔符包括制表符 ( \t )、冒号 ( : ) 和分号 ( ; ) 字符。

    二、CSV文件是从何而来?

         CSV 文件通常由处理大量数据的程序创建,是从电子表格和数据库中导出数据以及在其他程序中导入或使用的数据。例如可以将数据挖掘程序的结果导出为 CSV 文件,然后将其导入电子表格以分析数据、生成图表以进行演示或准备发布报告。

       CSV 文件非常容易以 Python 编程方式处理,可以直接处理 CSV 文件。

    三、CSV文件处理

    1、导入常用包 

    2、 文件读取

    1. data=pd.read_csv('D:\jupyter\股票数据.csv')
    2. data

     3、查看有哪些列

     4、 查看数据信息

     5、csv文件没有列名称,那么默认使用第一行数据自动填充标题

    6、无表头,header=None 不用数据自动填充标题,自动生成索引下标标题

     7、可以使用names自定义设置列名

     8、使用index_col设置索引列

     9、设置层次化索引

      (1)原数据tips

     (2)写入到csv文件中

    1. #获得数据
    2. df=pd.DataFrame(dd)
    3. #写入到csv文件中
    4. df.to_csv('d:/tips.csv',sep=',')

    (3)读取tips文件

    1. data=pd.read_csv(r'd:/jupyter/tips.csv')
    2. data

     (4) 设置多列索引

    1. data=pd.read_csv(r'd:/jupyter/tips.csv',index_col=['smoker','time'])
    2. data
    3. # data.head()

    10、如何解决中文问题

    pd.read_csv(r'd:/jupyter/test3.csv')

     发生异常:

    解决:使用encoding 指定文件的编码格式

      (1)先找到这个文件是何编码

     (2)再使用encoding='ANSI'

     11、数据是否为空,使用pd.isnull(data)

    12、使用na_values=0 ,也就是把0置为空

     四、TXT文本文件处理

    1. #使用open()打开文件
    2. list(open('d:/jupyter/test2.txt'))

    (1)使用read_table()读取文件

     (2)使用正则表达式sep=‘\s+'来解决空格问题

    1. da=pd.read_table(r'd:/jupyter/test2.txt',sep="\s+")
    2. da

    (3)使用skiprows跳过0和1行

    1. # skiprows跳过0和1行
    2. pd.read_table(r'd:/jupyter/test2.txt',sep="\s+",skiprows=[0,1])

    五、按块读取数据 

      (1) 源数据

    1. #244行数据
    2. tips=pd.read_csv(r'd:/jupyter/tips.csv',index_col=0)
    3. tips

     

    (2)nrows=n,是从文件头开始 ,文件的行数。

     (3)chunksize=100 文件块

    六、统计每个时间出现的次数 

    1. #迭代器只能读取一次,要重新用chunk,一定要注意read_csv()按块读取
    2. tips=pd.read_csv(r'd:/jupyter/tips.csv',index_col=0,chunksize=100)
    3. #使用Series存放数据
    4. tt=pd.Series([],dtype='float64')
    5. #迭代数据
    6. for tip in tips:
    7. # print(tip)
    8. #value_counts()统计值的次数
    9. # print(tip['time'].value_counts())
    10. tt=tt.add(tip['time'].value_counts(),fill_value=0)
    11. # 降序排序
    12. tt.sort_values(ascending=False)
    13. tt

     七、生成数据源

    1. # import numpy as np
    2. #循环500次
    3. columnss=[f'股票{i}' for i in range(500)]
    4. #时间序列做为索引,生成Series一维数组
    5. #参数 2022-09-10开始时间,
    6. # periods指定生成时间序列的数量
    7. # freq生成频率,默认‘D’,可以是’H’、‘D’、‘M’、‘5H’、‘10D
    8. indexs=pd.date_range('2022-09-10',periods=506,freq='D')
    9. #数据
    10. datas=np.random.normal(0,3,(506,500))
    11. df=pd.DataFrame(datas,columns=columnss,index=indexs)
    12. df

    八、保存数据 

    1、csv格式 

     注意:在原来的数据上再添加数据 

     2、h5格式

    1. # 保存为h5格式 (金融,天文学,物理,工程等等)
    2. hd=pd.HDFStore('d:/jupyter/store.h5','w')
    3. hd['data']=df
    4. hd.close()

    3、excel格式

    1. # 保存为excel格式
    2. df.index.name='日期'
    3. df.to_excel('d:/jupyter/股票2.xlsx',sheet_name='股票涨跌幅百分比',index=True,header=True)

    4、json格式

    1. # 保存json数据 (简单数据)
    2. df.to_json('d:/jupyter/股票数据.json')

     5、pickle加盐格式

    1. # 保存为加盐文件
    2. df.to_pickle('d:/jupyter/股票数据加盐.pkl')

    九、文件读取对比时间

    1. import time
    2. #开始时间
    3. t1=time.time()
    4. exd=pd.read_csv('d:/jupyter/股票1.csv')
    5. #结束时间
    6. t2=time.time()
    7. print(t2-t1)
    8. #显示数据
    9. exd

     读取速度比较:

    1.excel

    2.csv

    3.h5

    4.json

    5.pkl

  • 相关阅读:
    秋招准备--基础知识复习--系统编程
    Opencv——can‘t open/read file: check file path/integrity的解决办法
    网络安全(黑客)-零基础自学
    音频基础学习——声音的本质、术语与特性
    Processing通过编程实现艺术设计_实现艺术和现实的交互---数据设计分析002
    FPGA - 7系列 FPGA内部结构之Memory Resources -02- FIFO资源
    【Python】一个矩阵根据某一列选择大于或小于范围的数据
    进程间的通信
    etcd http API
    【力扣每日一题】2023.9.15 宝石补给
  • 原文地址:https://blog.csdn.net/hlx20080808/article/details/126828043