将矩阵市场矩阵转换为 pandas 数据框 python
Transform Matrix Market matrix into pandas Data frame python
我有一个市场矩阵文件,我必须用它来进行文本分析。
市场文件结构如下:
%%MatrixMarket matrix coordinate integer general
2000 5000 23000
1 4300 1
1 2200 1
1 3000 1
1 600 1
第二行中的值表示矩阵中的行数、列数和非零值的总数。这之后的所有行都包含 3 个值:
- 代表我的文本文档的行(从 1 开始索引);
- 代表一个词的列(索引从1开始);
- 词频。
正如在许多帖子中所读,我阅读了这个文件,使用 scipy.io.mmread 和新的 API 来处理解析数据结构。
特别是,我使用了以下代码:
Matrix = (mmread('file_name.mtx'))
B = Matrix.todense()
df = pd.DataFrame(B)
print(df.head())
但是,从这段代码中我得到了一个从 0 开始索引的数据框:
0 1 2 3 4 5 6 7 8 9 ... 4872 \
0 1 0 1 0 0 0 0 0 1 0 ... 0
1 0 0 0 0 0 0 0 0 0 0 ... 0
2 0 0 0 0 0 0 0 0 0 0 ... 0
3 1 0 1 0 0 0 0 0 1 0 ... 0
4 0 0 1 0 0 0 0 0 0 0 ... 0
理想的结果是保留原始市场矩阵的格式,其中行和列从 1 开始索引。
关于如何更正我的代码的任何想法?
谢谢!
您可以为数据框指定索引和列
Matrix = (mmread('file_name.mtx'))
B = Matrix.todense()
df = pd.DataFrame(B, range(1, B.shape[0] + 1), range(1, B.shape[1] + 1))
print(df.iloc[:5, :5])
1 2 3 4 5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 0 0
我有一个市场矩阵文件,我必须用它来进行文本分析。
市场文件结构如下:
%%MatrixMarket matrix coordinate integer general
2000 5000 23000
1 4300 1
1 2200 1
1 3000 1
1 600 1
第二行中的值表示矩阵中的行数、列数和非零值的总数。这之后的所有行都包含 3 个值:
- 代表我的文本文档的行(从 1 开始索引);
- 代表一个词的列(索引从1开始);
- 词频。
正如在许多帖子中所读,我阅读了这个文件,使用 scipy.io.mmread 和新的 API 来处理解析数据结构。
特别是,我使用了以下代码:
Matrix = (mmread('file_name.mtx'))
B = Matrix.todense()
df = pd.DataFrame(B)
print(df.head())
但是,从这段代码中我得到了一个从 0 开始索引的数据框:
0 1 2 3 4 5 6 7 8 9 ... 4872 \
0 1 0 1 0 0 0 0 0 1 0 ... 0
1 0 0 0 0 0 0 0 0 0 0 ... 0
2 0 0 0 0 0 0 0 0 0 0 ... 0
3 1 0 1 0 0 0 0 0 1 0 ... 0
4 0 0 1 0 0 0 0 0 0 0 ... 0
理想的结果是保留原始市场矩阵的格式,其中行和列从 1 开始索引。
关于如何更正我的代码的任何想法?
谢谢!
您可以为数据框指定索引和列
Matrix = (mmread('file_name.mtx'))
B = Matrix.todense()
df = pd.DataFrame(B, range(1, B.shape[0] + 1), range(1, B.shape[1] + 1))
print(df.iloc[:5, :5])
1 2 3 4 5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 0 0