python利用read_table和read_csv读取dat文件案例

目录

    • 1. 案例
      • 1.1 案例1 read_table
      • 1.2 案例2 read_csv
    • 2. pandas.read_table() 详解
      • 2.1 sep介绍
      • 参数列表:适用于read_csv()和read_table()
    • 3. read_csv()读取dat数据、写入dat
      • 3.1 案例
      • 3.2 error_bad_lines参数
    • 参考链接

1. 案例

1.1 案例1 read_table

df = pd.read_table(r'E:\data\2012_08_10.dat', sep=',', skiprows=1)
  • 首先,用记事本打开 dat 信息,查看内容。发现第一行为无用信息,跳过第一行, skiprows=1,
  • 第二行和第三行看似杂乱,值得数量却和下面的行是一致的,需要保留。
  • 内容都是由 逗号 隔开,所以 sep=‘,’ 。

python利用read_table和read_csv读取dat文件案例_第1张图片

1.2 案例2 read_csv

  • error_bad_lines=False # 跳过出错的行,超出header字段的行(默认情况下,字段过多的行(例如,逗号过多的 csv 行)会引发异常,并且不会返回任何 DataFrame。 如果为 False,那么这些“坏行”将从返回的 DataFrame 中删除,然后返回正常的这部分数据。)
  • skiprows 如果不加参数skiprows的话会报错,可以看出这是16*2的数据,如果想要去除多几行,如下图,在列表里添加你想要删除的哪几行,不支持切片[0:2]或者[0,1,3:6]
  • parsedates:默认是False,将该列解析为datetime格式
  • date_pareser
  • parse_dates
data = pd.read_csv('F:\\0008_S.dat', error_bad_lines=False, skiprows=[0, 2, 3], nrows=10)
data['TIMESTAMP'] = pd.to_datetime(data['TIMESTAMP'], errors='coerce')
data1 = data.dropna(axis=0, subset=['TIMESTAMP'])
data2 = data1[(data1['TIMESTAMP'] >= pd.to_datetime('2017-12-31 00:00:01')) & (data1['TIMESTAMP'] < pd.to_datetime('2018-01-02 00:00:00'))]

python利用read_table和read_csv读取dat文件案例_第2张图片
当我修改参数 skiprows=3后,列名变得很奇怪

data = pd.read_csv('F:\\0008_S.dat', error_bad_lines=False, skiprows=3, nrows=10)

在这里插入图片描述
说明只跳过了[0, 1, 2]三行,3这一行为当前的列名[‘Unnamed: 0’, ‘Unnamed: 1’, ‘Avg’, ……],这一行(3)应该被跳过,而第1行应该保留。故应该skiprows=[0, 2, 3]

2. pandas.read_table() 详解

2.1 sep介绍

当字段是以多种不同数量的空格分开时,可以向read_table传入一个正则表达式作为分隔符。正则表达式为 \s+,因此我们可以得到:

In [21]: result = pd.read_table('examples/ex3.txt', sep='\s+')

In [22]: result
Out[22]: 
            A         B         C
aaa -0.264438 -1.026059 -0.619500
bbb  0.927272  0.302904 -0.032399
ccc -0.264273 -0.386314 -0.217601
ddd -0.871858 -0.348382  1.100491

参数列表:适用于read_csv()和read_table()

python利用read_table和read_csv读取dat文件案例_第3张图片
python利用read_table和read_csv读取dat文件案例_第4张图片

3. read_csv()读取dat数据、写入dat

3.1 案例

import  pandas  as pd
#1:读取指定行
print("----读取指定的单行,数据会存在列表里面----")
df=pd.read_csv('测试.dat')#
data=df.loc[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦!
print("读取指定行的数据:\n{0}".format(data))

写入

#写入dat文件
#index=0:索引不写入
#sep='|':写入具有分隔符的数据
df.to_csv('xxx.dat',header=None,encoding='utf-8',sep='|',quoting=3,index=0)

3.2 error_bad_lines参数

# 跳过超出header字段的行,如4个字段,579行出现了 5个
pd.read_table(, error_bad_lines=False) 
 
# 显示的跳过信息 
b'Skipping line 579: expected 4 fields, saw 5\n'

参考链接

[1] panda.read_table 2022.6

你可能感兴趣的:(利用Python进行数据分析,#,pandas,python,read_table,dat)