一、CSV 文件

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

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

二、CSV文件是从何而来?

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

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

三、CSV文件处理

1、导入常用包 

2、 文件读取

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

 3、查看有哪些列

 4、 查看数据信息

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

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

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

 8、使用index_col设置索引列

 9、设置层次化索引

  (1)原数据tips

 (2)写入到csv文件中

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

(3)读取tips文件

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

 (4) 设置多列索引

data=pd.read_csv(r'd:/jupyter/tips.csv',index_col=['smoker','time'])
data
# 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文本文件处理

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

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

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

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

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

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

五、按块读取数据 

  (1) 源数据


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

 

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

 (3)chunksize=100 文件块

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


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

 七、生成数据源

# import numpy as np
#循环500次
columnss=[f'股票{i}' for i in range(500)]

#时间序列做为索引,生成Series一维数组
#参数 2022-09-10开始时间,
# periods指定生成时间序列的数量   
# freq生成频率,默认‘D’,可以是’H’、‘D’、‘M’、‘5H’、‘10D
indexs=pd.date_range('2022-09-10',periods=506,freq='D')
#数据
datas=np.random.normal(0,3,(506,500))
df=pd.DataFrame(datas,columns=columnss,index=indexs)
df

八、保存数据 

1、csv格式 

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

 2、h5格式

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

3、excel格式

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

4、json格式

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

 5、pickle加盐格式

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

九、文件读取对比时间

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

 读取速度比较:

1.excel

2.csv

3.h5

4.json

5.pkl

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐