【问题标题】:How to save and read matrices with pandas如何使用 pandas 保存和读取矩阵
【发布时间】:2022-11-23 23:31:45
【问题描述】:

我正在尝试使用 pd.to_csv 命令保存和读取不同大小的矩阵。问题是 pandas 以字符串形式保存矩阵,因此当我读取 CSV 文件时,我不会以数字形式检索矩阵。

import numpy as np
import pandas as pd

L = []
for Dim in range(3,10):
    L.append(np.random.randint(1,10, (Dim,Dim)))
    
df = pd.DataFrame(L)
df

df.to_csv("matrices.csv", index=False)
read_matrices = pd.read_csv("matrices.csv")
read_matrices

read_matrices 的每一行都是一个字符串,我希望它们是数字矩阵(ndarray 或 pdseries)。

估计和我保存数据的方式有关,我试了pd.to_csv()的所有选项都没有结果。有任何想法吗 ?

【问题讨论】:

    标签: python pandas csv save read.csv


    【解决方案1】:

    在完成append时出现,可能是“vector”对象被转换为“simple”。因此,我立即将生成的 numpy 数组转换为数据帧,然后将其添加到所需的数据帧中。对于数据类型,我使用了experimental type,因为 pandas 的空单元格被 nan 填充,并且这些列中的整数变成了浮点数。

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame(dtype=pd.Int64Dtype())
    for Dim in range(3, 10):
        l = np.random.randint(1, 10, (Dim, Dim))
        dfl = pd.DataFrame(l, dtype=pd.Int64Dtype())
        df = pd.concat([df, dfl])
    
    df.to_csv("matrices.csv")
    read_matrices = pd.read_csv("matrices.csv", dtype=pd.Int64Dtype())
    print(read_matrices)
    
    -------------------------------------
    
        Unnamed: 0  0  1  2     3     4     5     6     7     8
    0            0  7  3  4  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
    1            1  5  2  6  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
    2            2  8  8  4  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>
    3            0  8  3  3     2  <NA>  <NA>  <NA>  <NA>  <NA>
    4            1  8  8  6     8  <NA>  <NA>  <NA>  <NA>  <NA>
    5            2  4  2  7     6  <NA>  <NA>  <NA>  <NA>  <NA>
    6            3  9  7  4     6  <NA>  <NA>  <NA>  <NA>  <NA>
    7            0  1  1  1     1     8  <NA>  <NA>  <NA>  <NA>
    8            1  3  9  1     4     8  <NA>  <NA>  <NA>  <NA>
    9            2  9  9  3     5     8  <NA>  <NA>  <NA>  <NA>
    10           3  8  4  3     3     1  <NA>  <NA>  <NA>  <NA>
    11           4  1  6  5     9     4  <NA>  <NA>  <NA>  <NA>
    12           0  3  1  6     7     5     5  <NA>  <NA>  <NA>
    13           1  7  4  4     4     6     3  <NA>  <NA>  <NA>
    14           2  3  1  9     9     3     5  <NA>  <NA>  <NA>
    15           3  2  9  7     3     8     4  <NA>  <NA>  <NA>
    16           4  2  6  7     9     5     2  <NA>  <NA>  <NA>
    17           5  9  5  9     9     6     9  <NA>  <NA>  <NA>
    18           0  4  2  9     5     7     1     7  <NA>  <NA>
    19           1  4  9  1     5     3     2     8  <NA>  <NA>
    20           2  7  5  8     3     6     4     5  <NA>  <NA>
    21           3  5  4  4     8     1     8     8  <NA>  <NA>
    22           4  8  7  9     9     1     2     1  <NA>  <NA>
    23           5  8  8  3     9     9     6     4  <NA>  <NA>
    24           6  6  9  4     7     3     4     1  <NA>  <NA>
    25           0  8  5  5     3     1     6     4     9  <NA>
    26           1  5  3  5     3     3     4     2     7  <NA>
    27           2  3  1  5     1     3     3     1     1  <NA>
    28           3  5  4  6     2     5     1     6     3  <NA>
    29           4  7  9  2     7     1     5     9     7  <NA>
    30           5  9  2  4     3     5     9     1     9  <NA>
    31           6  1  4  4     9     5     8     8     7  <NA>
    32           7  6  3  9     4     7     3     2     4  <NA>
    33           0  7  9  4     5     9     1     4     6     4
    34           1  4  1  8     2     3     3     7     8     9
    35           2  9  2  7     6     7     7     2     1     2
    36           3  1  5  5     7     8     9     3     4     9
    37           4  4  2  8     7     4     8     8     3     1
    38           5  6  6  9     7     2     7     4     6     6
    39           6  3  1  4     2     7     1     6     9     2
    40           7  5  1  3     7     2     2     5     8     9
    41           8  7  4  4     2     5     8     8     9     9
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-19
      • 2014-04-06
      • 1970-01-01
      • 2013-08-27
      • 2021-12-29
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      相关资源
      最近更新 更多