个人总结的三种Python读取txt文件(高效快捷)

不管什么时候,读取txt文件,并生成一个完美的DataFrame数据结构,对我来说都是一项较为艰难的工作。

接下来我分享三种比较简单实用的方法,是我自己长期揣摩的方法:

read_csv读取法

我们拿一个txt文件看一下:

没有任何索引信息。
我们正常的读取如下:

path='./wuenda-data/ex1data1.txt'
data=pd.read_csv(path)
print(data)
F:\anaconda\envs\sklearn-env\python.exe F:/PycharmProject/demo.py
     6.1101    17.592
0    5.5277   9.13020
1    8.5186  13.66200
2    7.0032  11.85400
3    5.8598   6.82330
4    8.3829  11.88600
..      ...       ...
91   5.8707   7.20290
92   5.3054   1.98690
93   8.2934   0.14454
94  13.3940   9.05510
95   5.4369   0.61705

[96 rows x 2 columns]

Process finished with exit code 0

我们添加列名如下:

path='./wuenda-data/ex1data1.txt'
data=pd.read_csv(path,header=None,names=['X','y'])
print(data)
F:\anaconda\envs\sklearn-env\python.exe F:/PycharmProject/demo.py
          X         y
0    6.1101  17.59200
1    5.5277   9.13020
2    8.5186  13.66200
3    7.0032  11.85400
4    5.8598   6.82330
..      ...       ...
92   5.8707   7.20290
93   5.3054   1.98690
94   8.2934   0.14454
95  13.3940   9.05510
96   5.4369   0.61705

[97 rows x 2 columns]

Process finished with exit code 0

这种方法比较简单,适合的数据集也比较干净。

读取每一行数据+文本划分

我们看一个不同的数据集:

path='./wuenda-data/ex0.txt'
my_data=pd.read_csv(path)
print(my_data)
     1.000000\t0.067732\t3.176513
0    1.000000\t0.427810\t3.816464
1    1.000000\t0.995731\t4.550095
2    1.000000\t0.738336\t4.256571
3    1.000000\t0.981083\t4.560815
4    1.000000\t0.526171\t3.929515
..                            ...
194  1.000000\t0.257017\t3.585821
195  1.000000\t0.833735\t4.374394
196  1.000000\t0.070095\t3.213817
197  1.000000\t0.527070\t3.952681
198  1.000000\t0.116163\t3.129283

[199 rows x 1 columns]

很明显,上面的方法就不能再使用了,使用数据集的列与列之间用\t来分割。

我们可以采用下面的方法:

path='./wuenda-data/ex0.txt'
fr=open(path,'r')
all_lines=fr.readlines()
dataset=[]
for line in all_lines:
    line=line.strip().split('\t')
    dataset.append(line)
print(dataset)
df=pd.DataFrame(dataset,columns=['X1','X2','y'])
print(df)

这样我们生成的数据集为:

           X1        X2         y
0    1.000000  0.067732  3.176513
1    1.000000  0.427810  3.816464
2    1.000000  0.995731  4.550095
3    1.000000  0.738336  4.256571
4    1.000000  0.981083  4.560815
..        ...       ...       ...
195  1.000000  0.257017  3.585821
196  1.000000  0.833735  4.374394
197  1.000000  0.070095  3.213817
198  1.000000  0.527070  3.952681
199  1.000000  0.116163  3.129283

[200 rows x 3 columns]

这样的数据集是不是很好看了。

read_table函数读取文本文件

还拿第二个数据集来讲:

df2=pd.read_table(path,names=['x1','x2','y'])
print(df2)
      x1        x2         y
0    1.0  0.067732  3.176513
1    1.0  0.427810  3.816464
2    1.0  0.995731  4.550095
3    1.0  0.738336  4.256571
4    1.0  0.981083  4.560815
..   ...       ...       ...
195  1.0  0.257017  3.585821
196  1.0  0.833735  4.374394
197  1.0  0.070095  3.213817
198  1.0  0.527070  3.952681
199  1.0  0.116163  3.129283

[200 rows x 3 columns]

是不是对比之下方便了很多!

来源:旅途中的宽~

物联沃分享整理
物联沃-IOTWORD物联网 » 个人总结的三种Python读取txt文件(高效快捷)

发表评论