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.选中单元格,点击菜单栏的数据:
    Python文本处理技巧
  • 2 点击分列,选择分隔符号,选中自己文本中数据分隔符
    Python文本处理技巧
  • 3 点击下一步完成分割
    Python文本处理技巧

二、列表合并

用途:将两个列表存入一个.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)

总结

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

上一篇:C4996 'fopen': This function or variable may be unsafe.


下一篇:【源码】validate-npm-package-name 检测 npm 包是否符合标准