技术总编辑:陈鼎

Stata&Python云课程来了!

寒雪梅花尽,春风柳归。 为了感谢大家长期以来的支持与信任,爬虫俱乐部为大家送上福利! ! ! Stata & python专题课程在腾讯课堂同步上线~原价2400元的Python编程培训班现仅售100元,详情请查看推文; 原价600元的正则表达式课程现仅售49.9元,详情请查看推文; 基础字符串函数课程原价600元现仅售49.9元,详情请查看推文; 原价600元的网络爬虫课程现仅售49.9元,更多信息请查看推文; 原价600元的文本解析课程,现仅售49.9元,更多资讯请查看推文。 变的是价格,不变的是课程质量和答疑服务。 报名有任何问题,欢迎在公众号后台和腾讯课堂留言!

●指南●

通常情况下,各种数据都存储在磁盘上。 当你要分析它们的时候,你需要用Python将它们读入内存。 这时候,Pandas 就派上用场了。 Pandas模块可以读写多种格式的数据,如csv、txt、excel、sql、json、html等。在Pandas中,文件的读取通常使用pandas.read_xxx()形式的函数,写入使用方法to_xxx() 的形式。 在这篇文章中,笔者主要讲一下如何使用Pandas读取txt格式的文件。

准备txt文件

在学习阅读txt文件之前,我们先来预览一下如何创建一个txt文件。 在这里,我们考虑这样一个DataFrame数据:

1#引入numpy库、pandas库
2import numpy as np     
3import pandas as pd     
4#随机生成维度4*5的一组样本,服从标准正态分布
5df=pd.DataFrame(np.random.randn(4,5),index=list("1234"),columns=list("ABCDE"))
6df

c 如何读取txt文件_c语言如何读取txt文件_c读取txt文件每一行

上表可以使用DataFrame中的to_csv()方法保存为txt文件:

1#将df保存为txt文件,指定它的分隔符是"t"
2df.to_csv("C:/Users/Coco/Desktop/Python/df1.txt",sep='t')

通过上面的命令,创建了一个txt文件,下一步我们学习如何读取这个文件。

读取txt文件

在读取txt文件之前,需要先判断txt文件是否符合基本格式,即是否有“t”等特殊分隔符,如果存在则可以读取。 读取txt文件时,一般使用Pandas中的read_table函数和read_csv函数。

01

读表函数

使用read_table函数读取一个txt文件的命令如下:

1#读入df1.txt文件,指定它的分隔符是"t"
2pd.read_table("C:/Users/Coco/Desktop/Python/df1.txt",sep='t')

c语言如何读取txt文件_c读取txt文件每一行_c 如何读取txt文件

我们可以观察到,与之前的DataFrame对象相比,我们读取的表多了Unnamed:0列,这些是原来DataFrame对象的行标记。 因为在保存文件的时候c读取txt文件每一行,Pandas默认会保存行标记和列标记的值,但是在读取文件的时候,Pandas并不知道列是行标记。

读取文件时,如果没有设置index_col列索引,默认使用从0开始的整数索引。 对表格的某一行或某一列进行操作后c读取txt文件每一行,你会发现在保存为文件时,总会多出一列从0开始。 如果设置index_col参数来设置列索引,就不会出现这个问题。 因此,我们在读取的时候,可以通过参数index_col来指定​​行标记所在的列。

1#读入df1.txt文件,指定它的分隔符是t,设置第1列数据作为index
2pd.read_table("C:/Users/Coco/Desktop/Python/df1.txt",sep='t',index_col=0)

还有一种方法,保存时可以输入index=False忽略行标记,也可以得到和上面命令一样的结果。

1#将df保存为txt文件时忽略行标记
2df.to_csv("C:/Users/Coco/Desktop/Python/df1.txt",sep='t',index=False)
3#读取df1.txt文件 
4pd.read_table("C:/Users/Coco/Desktop/Python/df1.txt",sep='t'

02

read_csv 函数

在 Pandas 中使用 read_csv 函数读取 txt 文件与使用 read_table 函数非常相似。

1#df的写入、读取
2df.to_csv("C:/Users/Coco/Desktop/Python/df1.txt",sep='t')
3pd.read_csv("C:/Users/Coco/Desktop/Python/df1.txt",sep='t',index_col=0)

那么读取txt文件时read_table函数和read_csv函数有什么区别呢? 它们的区别在于默认的分隔符separator不同。 read_table函数默认使用“t”对数据集进行切割,而read_csv函数默认使用“,”对数据集进行切割。

功能说明

读表

从文件、URL 和文件类型对象加载分隔数据。 默认分隔符是制表符 ("t")。

读取_csv

从文件、URL 和文件类型对象加载分隔数据。 默认分隔符是逗号。

1df.to_csv("C:/Users/Coco/Desktop/Python/df2.txt")   #df的写入,分隔符为“,”
2pd.read_csv("C:/Users/Coco/Desktop/Python/df2.txt",index_col=0)

此时使用read_csv函数读取txt文件时,默认的分隔符sep=","可以省略。

准备读取txt文件的其他操作

首先准备如下ex1.txt文件(后台回复“ex1”即可获取)。

c读取txt文件每一行_c语言如何读取txt文件_c 如何读取txt文件

01

指定读取的txt文件

 1# 文件ex1.txt的读入,分隔符为‘t’
2ex1 = pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t")
3ex1
4# pd.read_csv将第一行默认为标题行即列名,行索引0,1,2,3为自动添加
5# 文件第一行不作为标题行,自动添加列索引 0,1,2,3,4,5
6ex2=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None)
7ex2
8#自定义列名
9ex3=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None,names=['something','a','b','c','d','e'])
10ex3
11#建立索引:something
12ex4=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None,names=['something','a','b','c','d','e'],index_col='something')
13ex4
14#层次化索引:指定多个列作为行索引即可
15ex5=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None,names=['something','a','b','c','d','e'],index_col=['something','a'])
16ex5
17#只读入前面3行
18ex6=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None,names=['something','a','b','c','d','e'],nrows=3)
19ex6
20#跳过指定行
21ex7=pd.read_csv("C:/Users/Coco/Desktop/Python/ex1.txt",sep="t",header=None,names=['something','a','b','c','d','e'],skiprows=[0,2])
22ex7
23#计算表格行数,不包括表头
24rownum = ex3.shape[0]    
25#计算表格列数,并输出行数、列数
26colnum = ex3.columns.size
27print("行数:",rownum)
28print("列数:",colnum)

02

对列和行进行操作

 1#提取指定的列
2print(ex3['b'])   #方式一
3print(ex3.b.values)   #方式二
4#根据something列对数据去重
5rex3 = ex3.drop_duplicates(['something'])
6rex3
7#获取something列去重后的值
8rsomething = ex3['something'].unique()  
9print('rsomething:',rsomething)
10#something列去重后有多少值
11totalrsomethingnum = rsomething.size   
12print('num:',totalrsomethingnum)
13#计算a列所有值之和
14ex3['a'].sum()     
15#过滤含特定值的行,挑选出a列取值为1或9的行
16ex3[(ex3['a']==1)|(ex3['a']==9)]    
17#计算a列各个取值的个数
18aex3 = ex3.groupby('a').size()    #方式一
19aex3
20bex3 = ex3['a'].value_counts()   #方式二
21bex3
22#计算a列取值为1和取值为5的个数
23v=aex3[1]+aex3[5]     
24print("两个的和:",v)     
25print("总和:",aex3.sum())

03

每个值的图形表示

1import matplotlib.pyplot as plt
2fig=plt.figure()
3ex3.plot(kind='bar',grid=True)   #bar和barh能切换x轴,y轴
4plt.show()        #在需要显示的时候调用,会一次把所有的图都画出

c语言如何读取txt文件_c读取txt文件每一行_c 如何读取txt文件

04

缺失值显示:参数na_values

 1#将ex4保存为txt文件,指定它的分隔符是t
2ex4.to_csv("C:/Users/Coco/Desktop/Python/ex4.txt",sep='t'
3#缺失值的显示,默认将缺失值标记为 NaN
4result1 = pd.read_table('C:/Users/Coco/Desktop/Python/ex4.txt')
5result1
6#参数 na_values设置显示为 NaN的字符串,可以是单个字符串也可是列表
7result2 = pd.read_table('C:/Users/Coco/Desktop/Python/ex4.txt',na_values=['world'])
8result2
9#也可以通过字典的形式给出需要标记为NaN的值,'message'列被记为NaN的值有'foo'和 'NA',‘somthing’列的有‘two’
10result3 = pd.read_table('C:/Users/Coco/Desktop/Python/ex4.txt',na_values={'message': ['foo''NA'], 'something': ['two']})
11result3

以上就是今天的全部内容,大家可以尝试自己创建一个txt文件,用上面说的方法阅读,快去试试吧!

最后为大家揭晓雪球网最近展示的沪深证券和港股关注人数增长前10名。

c读取txt文件每一行_c语言如何读取txt文件_c 如何读取txt文件