【问题标题】:Plot a 2D graph from a .csv file with string format从具有字符串格式的 .csv 文件绘制二维图形
【发布时间】:2021-10-10 23:51:26
【问题描述】:

我正在审查以下讨论

Plot a 2D graph from a csv file using matplotlib in Python in ubuntu

但是,它不太适合我的情况。我的 .csv 文件中的数据格式是字符串。我使用下面的代码来展示这一点。

rm = np.genfromtxt('test.csv', delimiter=',',dtype='str', skip_header=26)
print(rm)
np.shape(rm)

如果我想用 x 轴在“;”中的左侧位置绘制数据,y 轴在“;”中的右侧位置。所以我希望形状是(1001,2)。如何做到这一点?

谢谢!

【问题讨论】:

    标签: python string numpy csv matplotlib


    【解决方案1】:

    有很多方法可以做到这一点,但如果我是你,我会选择这种方式。

    with open('matrix.txt') as file:
        lines = file.read()
    # lines: '1;2;3;,4;5;6;,7;8;9;,'
    
    lines = [line.split(';') for line in lines.split(',')]
    # lines: [['1', '2', '3', ''], ['4', '5', '6', ''], ['7', '8', '9', ''], ['']]
    
    lines = [[float(value) for value in line if value] for line in lines]
    lines = [line for line in lines if line]
    # lines: [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]
    
    matrix = np.array(lines)
    # matrix: array([[1., 2., 3.],
    #                [4., 5., 6.],
    #                [7., 8., 9.]])
    

    或者,您也可以选择这种方式。

    with open('matrix.txt') as file:
        lines = file.read()
    
    lines = lines.replace(';', ' ').replace(',', ';')
    # lines: '1 2 3 ;4 5 6 ;7 8 9 ;'
    
    if lines[-1] == ';':
        lines = lines[:-1]
    
    np.matrix(lines)
    

    保存代码时,我认为这也可以。

    rm = np.genfromtxt('test.csv', delimiter=',', dtype='str', skip_header=26)
    rm = np.array([[float(value) for value in line.split(';') if value] for line in rm])
    

    它们并不优雅,但它们很有效。

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 2021-10-10
      • 2021-09-16
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多