转换 csv 文件,以便所有属性都将成为具有相应元素的列

数据挖掘 机器学习 Python 数据挖掘 数据
2022-02-22 01:02:46

所以我在 csv 文件中有这个数据集。我想把它转换成矩阵形式。

目前的数据如下所示:

University, adelphi State, newyork Control, private No-of-Students, 5-10 Male:Female Ratio:, 30:70 Student:Faculty Ratio:, 15:1 Sat Verbal, 500 .... Academic-Emphasis, business-administration Academic-Emphasis, biology

我想转换它,使属性成为列和每个相应行上的元素。就像在 Excel 工作表中一样。

例子:

University | State | Control | No-of-Students| ect. adelphi | newyork | private | 5-10 |

非常感谢您的帮助!

1个回答

这是两种不同的方法。一次读取一行文件以生成字典列表,另一个使用纯熊猫;

import pandas as pd

with open('datafile.csv', 'r') as f:
    data = []
    current_university = {}
    for line in f:
        line = [x.lstrip().strip() for x in line.split(',')]
        if (line[0] == 'University'):
            if current_university:
                data.append(current_university)
            current_university = {line[0]: line[1]}
        else:
            current_university[line[0]] = line[1]
    data.append(current_university)
df = pd.DataFrame(data)
df.set_index('University', inplace=True)

然后是熊猫;

df = pd.read_csv('datafile.csv', header=None)
df = df.set_index(0).T
df = df.groupby(df.columns.values, axis=1).agg(lambda x: x.values.tolist()).sum().apply(pd.Series).T.sort_values('University')
df.set_index('University', inplace=True)

就我个人而言,我认为在第一个选项中看到发生了什么要容易得多,但只是想表明它也可以只使用 pandas 来完成。