Python应用举例:读取文本数据并转为数据框

【需求】

很多个用户同时对n个题进行作答并得到结果,数据格式如下:

现在想通过一系列转换得到如下形式的数据框:

【Python实现】

操作之前,现将相关的包导入,如下:

import numpy as np
from pandas import DataFrame

1、首先是读取数据,方法如下:

def load_data(file_path):
    '''
    导入数据
    :param file_path: 数据存放路径
    :return: 返回数据列表
    '''
    f = open(file_path)
    data = []
    for line in f.readlines():
        row = []  # 记录每一行
        lines = line.strip().split("\t")
        for x in lines:
            row.append(x)
        data.append(row)
    f.close()
    return data

2、进行转换操作

def transform_method(data):
    '''
    转换方法
    :param data: 读进来的数据列表
    :return: 返回转换后的数据框
    '''
    a = set()
    b = set()
    for i in range(len(data)):
        a.add(data[i][0])
        b.add(data[i][1])
    a = list(a)
    b = list(b)
    res = []
    for x in range(len(a)):  # 进行对比,将对应的结果存到对应的位置
        for z in range(len(b)):
            for y in range(len(data)):
                if a[x] == data[y][0] and b[z] == data[y][1]:
                    res.append(data[y][2])
    res = b + res
    res = np.array(res).reshape(len(a) + 1, len(b))
    result = DataFrame(res)  # 转换为数据框,便于调用to_csv()方法进行存储
    result.to_csv(path + "res.csv", header=None, index=False, sep="\t")
    return result

3、查看结果

(1)数据处理之前:

(2)数据处理之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

象在舞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值