在用list包含多个dict的模式生成dataframe时,由于dict的无序性,而uci很多数据的特征名直接是1,2,3…,生成的dataframe和原生的不一样,
为了方便观看和使用,我们将其列名排序:
有以下两种方法(都不包含y列的情况下):
1、(我的):
df.columns = df.columns.astypeint)
df.sort_indexaxis=1,inplace=True)
先将列名从字符串转为int型,然后再对列名排序。
2、(网上看到的):
对于这样的数据: [‘Q1.3′,’Q6.1′,’Q1.2′,’Q1.1’,……]
要变为这样的: [‘Q1.1′,’Q1.2′,’Q1.3′,…..’Q6.1’,……]
df.reindex_axissorteddf.columns), axis=1)
这样的话,似乎对于字符串型数据也可以排序(但如果要解决我那个问题,也要先进行数据类型的转换)
最后,附上完整的从uci.txt文本数据类型转换为dataframe表格式的numerical类型代码:
X,y = [],[] with open"ionosphere_scale.txt") as f: lines = f.readlines) for line in lines: line = line.split) y.appendline[0]) X.append{i.split":")[0]:i.split":")[1] for i in line[1:]}) df = pd.DataFrameX,dtype="float") n_feat = lendf.columns) df.columns = df.columns.astypeint) df.sort_indexaxis=1,inplace=True) df["y"] = np.arrayy,dtype=float) printdf.info)) df.to_excel"ionosphere_scale.xlsx",index=None)
最后,mark一篇关于数据类型转换的文章:https://vimsky.com/article/3694.html