【需求】
很多個使用者同時對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)資料處理之後