目录
1. 案例1.1 案例1 read_table1.2 案例2 read_csv
2. pandas.read_table() 详解2.1 sep介绍参数列表:适用于read_csv()和read_table()
3. read_csv()读取dat数据、写入dat3.1 案例3.2 error_bad_lines参数
4. with + open()方法4.2 with + open() 获取最后一行
5. 特殊案例参考链接
1. 案例
1.1 案例1 read_table
df = pd.read_table(r'E:\data\2012_08_10.dat', sep=',', skiprows=1)
首先,用记事本打开 dat 信息,查看内容。发现第一行为无用信息,跳过第一行, skiprows=1,第二行和第三行看似杂乱,值得数量却和下面的行是一致的,需要保留。内容都是由 逗号 隔开,所以 sep=‘,’ 。
![在这里插入图片描述](https://img-blog.csdnimg.cn/6851fac0623e4daf8b14147159dc7d6e.png)
1.2 案例2 read_csv
![在这里插入图片描述](https://img-blog.csdnimg.cn/40c7265a566e45fd937ac9496c84d82e.png#pic_center)
error_bad_lines=False # 跳过出错的行,超出header字段的行(默认情况下,字段过多的行(例如,逗号过多的 csv 行)会引发异常,并且不会返回任何 DataFrame。 如果为 False,那么这些“坏行”将从返回的 DataFrame 中删除,然后返回正常的这部分数据。)skiprows 如果不加参数skiprows的话会报错,可以看出这是16*2的数据,如果想要去除多几行,如下图,在列表里添加你想要删除的哪几行,不支持切片[0:2]或者[0,1,3:6]parse_dates:默认是False,将该列解析为datetime格式parse_dates:将数据解析为datetimes格式,即datetime64[ns],可以将多个列合成为一个时间列,或者只解析一列。skipfooter:该参数只能是部分取消读入,且只能从后向前地设定取消读入部分,取消末尾的多少行。names:对列名进行命名。header:header关键字的主要功能有两个:
第一是将指定行的数据作为读取数据各列的列名,由最初读取数据显示出的信息表明,edu文件文件中第一排的“姓名”“居住地”“年级”“年龄”“是否住校”依次成为了各列的列名,这是因为header默认参数为0,即将edu文件中第一排作为列名的缘故。第二个功能,那就是确定数据开始行,在将“阴晓彤”同学的数据变为新列名的同时,原本的列名“姓名”“居住地”“年级”“年龄”“是否住校”这一行却因为将第一排(实际的第二排)作为列名而消失了,这是因为同时本行也成为了读取数据的开始行。
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'] = 2: # 判断是否最后至少有两行,这样保证了最后一行是完整的
last_line = lines[-1] # 取最后一行
break
# 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
# 所以off翻倍重新运行,直到readlines不止一行
offset *= 2
print('文件' + fname + '第一行为:' + first_line.decode())
print('文件' + fname + '最后一行为:' + last_line.decode())
5. 特殊案例
这里 sep 用的 \t+
data = pd.read_table(f, encoding='gbk', parse_dates={'time': ['年月日', '时间戳']}, error_bad_lines=False, sep='\t+',skiprows=10)
filepath_or_buffer---->CSV文件的路径或URL地址。 sep---->CSV文件中字段分隔符,默认为逗号。 delimiter---->CSV文件中字段分隔符,默认为None。 header---->指定哪一行作为列名,默认为0,即第一行。 names---->自定义列名,如果header=None,则可以使用该参数。 index_col---->用作行索引的列编号或列名。 usecols---->读取指定的列,可以是列名或列编号。 dtype---->指定每列的数据类型,可以是字典或者函数。 na_values---->用于替换缺失值的值。 skiprows---->跳过指定的行数。 skipfooter---->跳过文件末尾的指定行数。 nrows---->读取指定的行数。 parse_dates---->指定哪些列需要转换为日期类型。 infer_datetime_format---->尝试解析日期时间格式(提高效率)。 dayfirst---->将日期解析为“日-月-年”而不是“月-日-年”的格式。 encoding---->CSV文件的编码方式,默认为None,使用系统默认编码。 squeeze---->如果文件只包含一列,则返回Series对象而不是DataFrame对象。 thousands---->千位分隔符。 decimal---->小数点分隔符。
参考链接
[1] panda.read_table 2022.6
|