Python文本处理技巧


前言

对于处理脑电数据,知识追踪的数据过程中可能用到的一些数据处理方法的分享, 目前只遇到了两方面的问题,一个是一行一列转变为一行多列的问题,另一个是将两个列表当做两列保存在文本文件里。以后遇到其它问题再更新。

一、分行划段

用途:将一列数据划分为多列,而不改变原本的行数

在帮媳妇处理数据时遇到的问题,虽然后面她自己解决了,但我们用的方法不一样,在这里分享一下我的方法:

import numpy as np 
import pandas as pd 
# Import and suppress warnings
import warnings
warnings.filterwarnings('ignore')

#更改表格文件路径:
data = pd.read_csv('E:/yan/poj_with_feature.csv')
#读取前五行数据:
#寻找数据集中是否存在空值:
display(data.isnull().any())

data = data['feature']

data = data.str.strip('[')     # 去除首尾部分的括号
data = data.str.strip(']')
data = data.str.replace('\n', '')  # 将换行符用空格代替
data = pd.DataFrame(data)

data.head(10)

print("the shape of data:",data.shape)

# 实现分列功能:
i =0
for i in range(8): # 通过for循环产生新列
    data[i+1] = data['feature'].map(lambda x:x.split()[i])   # 通过lamada函数产生新列,直接使用split()

data = data.drop(['feature'],axis = 1)   # 删除综合列
data.head(10)
# print(data.shape)

# 在所有列名前加上前缀
data = data.add_prefix('feature')
data

PS: 对于一行一列或者几行一列的数据,数据量较小的情况,也可以使用EXCEL表格内置功能实现分列功能:

  • 1.选中单元格,点击菜单栏的数据:
    在这里插入图片描述
  • 2 点击分列,选择分隔符号,选中自己文本中数据分隔符
    在这里插入图片描述
  • 3 点击下一步完成分割
    在这里插入图片描述

二、列表合并

用途:将两个列表存入一个.txt 文件中,每个列表作为文件中单独存在的一个列

import numpy as np 
import pandas as pd 
# Import and suppress warnings
import warnings
warnings.filterwarnings('ignore')

# 把数据存放到列表中:
a = [0, 24, 140, 369, 564, 693, 864, 967, 1111, 1191, 1345, 1423, 1586, 1661, 1824, 1906, 2060, 2149, 2280, 2360, 2517, 2600, 2703, 3073, 3192, 3335, 3406, 3569, 3648, 3833, 3893, 4067, 4148, 4309, 4413, 4548, 4649, 4815, 4886, 5180, 5262, 5493, 5560, 5799, 5888, 6010]
# 更改路径
b = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0]
c = [a, b] 
with open("E://Paper/PCG/list1.txt", "w") as file:
    for x in zip(*c):
        file.write("{0}\t{1}\n".format(*x)) 
        
with open("E://Paper/PCG/list1.txt", "r+") as file:
    d = file.readlines()
    print(d)

如果要化为科学计数法的形式,可以这么写:

import warnings
warnings.filterwarnings('ignore')

# 把数据存放到列表中:
a = [0, 24, 140, 369, 564, 693, 864, 967, 1111, 1191, 1345, 1423, 1586, 1661, 1824, 1906, 2060, 2149, 2280, 2360, 2517, 2600, 2703, 3073, 3192, 3335, 3406, 3569, 3648, 3833, 3893, 4067, 4148, 4309, 4413, 4548, 4649, 4815, 4886, 5180, 5262, 5493, 5560, 5799, 5888, 6010]
# 转换为科学计数标准型:
for i in range(len(a)):
    a[i] = '{:e}'.format(a[i])
print(a)

b = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0]
# 转换为科学计数标准型:
for i in range(len(b)):
    b[i] = '{:e}'.format(b[i])
print(b)

# 合并列表
c = [a, b]

# 以写的形式打开文件
with open("E://Paper/PCG/list1.txt", "w") as file:
    for x in zip(*c):
        file.write("{0}\t{1}\n".format(*x))

# 以读的方式打开文件
with open("E://Paper/PCG/list1.txt", "r+") as file:
    d = file.readlines()
    print(d)

总结

目前就遇到这两个问题,就写到这吧。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风不竞:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值