Pandas 读取文本数据

本文详细介绍了如何使用Pandas读取文本数据,包括读取CSV和自定义分隔符的数据,指定列名和索引,处理缺失值,以及逐块读取文件。此外,还涉及到数据写入文本格式、JSON数据处理、HTML和API数据的读取,以及Pandas库中的数据取样方法。

Pandas 读取文本数据

标签(空格分隔): python pandas


Pandas 读取文本数据

pandas解析函数
解析函数

如果原始数据是有标题的
原始数据
read_csv调用
read_csv示例
read_table
这里可以指定seq=’\s+'等正则表达式来当分割符
如果列名比数据行数量少1,read_table会推断第一列是DataFrame的索引
read_table示例

指定列名
如果没有标题,那么可以自定义列名(names=[])或者分配默认列名(header=None)

 pd.read_csv(path, header=Node)
 pd.read_table(path, names=['a','b'])

指定索引
如果想要将指定列设置为DataFrame索引可以明确指定message该列放到索引位置或者通过index_col来指定"message",想要指定多列依次传入由列编号或者列名组成的列表

pd.read_csv(path, names=[], index_col=['key1', 'key2'])

跳过指定行
使用skiprows参数
pd.read_csv(path, skip_rows=[0, 2, 3])

缺失值处理
默认情况下Pandas会用一组经常出现标记值进行识别,如NA -1.#IND 以及NULL等,也就说把数据中出现这些数据的当初NaN缺失

读取缺失值

也可以使用na_values指定的表示缺失值的字符串
pd.read_csv(path, na_values=['NULL'])

还可以使用一个字典sentinels为不同列指定不同的表示缺失值的字符串
指定缺失值

read_csv/read_table 参数解释

参数解释1
参数解释2
参数解释3

逐块读取文件
只想读取几行,使用nrows进行指定
pd.read_table(path, nrows=5)

要逐块读取文件,需要设置chunksize(行数).
read_csv返回TextParser对象让你可以根据chunksize对文件逐块迭代
如下图所示,可能这样能够提高效率?

将数据写到文本格式
如下图所示

  • 用seq指定分隔符eg, seq=’|’
  • 缺失值在输出会为空字符串,用na_seq='NULL’指定特定字符串
  • path参数使用sys.stdout表示只输出
  • 默认会输出行列标签,可以用index=False,header=False禁用
  • 只输出部分列以及指定顺序,可以用cols=[‘a’, ‘b’]

手工处理分隔符格式

一个简单的处理例子如下

定义一个新读取写格式

JSON数据
可以通过json.loads即可将JSON字符串Python形式,json.dump将Python转为JSON格式

 import json
 result = jsons.loads(obj)
 boj2 = jsons.dump(result)

XML和HTML:WEB收集信息
一个简单的读取HTML demo

links是上面获取的结果,这里links存的是对象的集合,要想获取URL等信息需要使用对象的的get方法

 lnk = links[28]
 lnk.get('herf')
 lnk.text_content()

具体关于XML的后面自己看书吧

读取Execl
ExeclFile需要用到xlrd和openpyxl两个包,所以需要先安装,以下是创建一个ExeclFile实例以及使用parse读取到DataFrame

 xls_file = pd.ExeclFile(path)
 table = xls_file.parse('Sheet1')
 

使用HTML和API
许多网站可以通过JSON或其他格式提供公共的API,可以通过python访问这些api,其中比较简单的是request

比如在Twitter搜索"pyhton panda",可以发送一个gets请求

import requests
url = '...'
resp = requests.get(url)
# response对象text属性含有GET请求
# 许多返回的都是JSON字符串,我们需要加载到  pyhton 对象
import json
data = json.loads(resp.txt)

从数据中取样

利用Pandas库中的sample。

DataFrame.sample(n=None, frac=None, replace=False,weights=None, random_state=None, axis=None)

n是要抽取的行数。(例如n=20000时,抽取其中的2W行)

frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)

replace抽样后的数据是否代替原DataFrame()

weights这个是每个样本的权重,具体可以看官方文档说明。

random_state这个在之前的文章已经介绍过了。

axis是选择抽取数据的行还是列。axis=0的时是抽取行,axis=1时是抽取列(也就是说axis=1时,在列中随机抽取n列,在axis=0时,在行中随机抽取n行)

<think>好的,用户想了解如何使用Pandas读取文本文件的示例代码。首先,我需要回忆Pandas中处理文本文件的常用函数。记得Pandas主要用read_csv来读取文本文件,即使文件不是CSV格式,只要指定合适的分隔符就行,比如制表符或者空格。用户提供的引用里也提到了read_csv函数,说明这是正确的方法。 接下来,用户可能需要具体的代码示例。根据引用[2],使用read_csv时,需要指定分隔符参数sep。例如,如果文本文件是用制表符分隔的,应该设置sep='\t'。此外,引用[3]提到可以设置index_col来自定义索引列,这也是一个有用的参数。 需要考虑用户可能遇到的常见问题,比如文件路径错误、编码问题或者如何处理没有标题行的文件。例如,如果文件没有列名,需要设置header=None,然后手动指定列名。此外,处理不同编码的文件,比如UTF-8或GBK,可能需要指定encoding参数。 用户提供的示例中有一个example.txt,内容可能结构简单,但实际中数据可能更复杂,比如注释行或者缺失值。这时候,可以介绍skiprows参数跳过注释行,或者na_values参数处理缺失值。 还需要确保代码示例正确,比如正确的缩进和语法。例如,导入Pandas库,然后使用pd.read_csv()函数,指定正确的文件路径和分隔符。同时,展示如何查看读取后的DataFrame,比如使用print(df.head())。 另外,引用[1]提到使用Pandas读取txt文件的基本步骤,引用[2]和[3]提供了具体的参数设置,这些都需要整合到回答中。可能需要指出虽然函数是read_csv,但它同样适用于txt文件,只要分隔符正确。 最后,生成相关问题时要围绕Pandas读取文本文件的常见问题,比如处理不同分隔符、编码、大文件处理或性能优化等。这些问题可以帮助用户进一步学习相关内容。</think>### Pandas读取文本文件实现步骤 #### 1. 基础用法(制表符分隔文件) 当文本文件使用制表符`\t`分隔时,直接指定`sep`参数: ```python import pandas as pd # 读取制表符分隔的文本文件 df = pd.read_csv('data.txt', sep='\t') print(df.head()) ``` 此方法适用于类似CSV格式但使用非逗号分隔符的情况[^2] #### 2. 处理无表头文件 若文件没有列名标题行,需显式声明: ```python # 指定列名并跳过表头 df = pd.read_csv('data.txt', sep='|', header=None, names=['col1', 'col2', 'col3']) ``` #### 3. 特殊编码处理 针对中文Windows系统生成的文本文件: ```python # 处理GBK编码文件 df = pd.read_csv('data.txt', sep=';', encoding='gbk') ``` #### 4. 索引列设置 指定某列作为索引(如EMPNO列): ```python df = pd.read_csv('employee.txt', index_col='EMPNO') # 索引设置[^3] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值