python - 从python中的csv数据绘制
问题描述
我是 python 新手,正在练习 csv 数据操作。现在我有一种情况,我有 100 * 4 个数据,其中第 i 行对应于第 i 个示例 (x_i, y_i) 第 1,2 和 3 列用于每个输入变量 (x_1, x_2, 1) abd 4 -th 列是输出 y。然后,确定适当的常数 (a,b)(这里假设为 (6, 5))。
现在我要绘制图形,x 轴为 ax_1+bx_2,y 轴为 y。
这是数据的一部分。
"x1","x2","1","y"
-0.626453810742332,-0.620366677224124,1,0.28239638205273
0.183643324222082,0.0421158731442352,1,1.73290072129656
-0.835628612410047,-0.910921648552446,1,-0.293950695808836
这是我试图完成的代码
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x1 = []
x2 = []
y = []
a = 6
b = 5
with open('data.csv', 'r') as f:
lines = f.readlines()
tmp_x1 = np.array(lines)[:,0]
tmp_x2 = np.array(lines)[:,1]
tmp_y = np.array(lines)[:,3]
x1.append(tmp_x1)
x2.append(tmp_x2)
y.append(tmp_y)
ax1 = list()
bx2 = list()
for i in range(100):
ax1.append(a * x1)
bx2.append(b * x2)
plt.figure()
plt.xlabel('a*x1 + b*x2')
plt.ylabel('y')
plt.plot(ax1 + bx2, y)
这段代码给了我错误
IndexError:数组的索引过多
有人可以帮我解决这个问题吗?
[编辑][图表] 1
代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
a,b = 6,5
df['x'] = df['x1']*a + df['x2']*b
plt.figure()
plt.plot(df['x'], df['y'])
plt.show()
解决方案
f.readlines()
将读取文件中的所有内容并将其放入列表中。该列表只是一个一维数组,长度为文件中的数字。您可以使用 numpy 函数genfromtxt
将数据直接加载到 numpy 数组中
lines = np.genfromtxt('data.csv', delimiter=',' ,skip_header=1)
推荐阅读
- sql - 比较 SQL Server 中的两个日期列
- azure - Azure API 没有授权
- javascript - 为什么 Javascript 可折叠在 IE 中不起作用?
- python-3.x - NSSM Python 服务因模块错误而暂停
- angular - 模块内的路由器出口不适用于 ngForm
- python - 如何在 Python 中使用 OSMnx 填充水体
- matplotlib - 使用 matplotlib 设置注释和条之间的宽度
- delphi - 禁用时如何使 TTreeView 不突出显示所有节点?
- angular - Angular Material MatDialog 不会关闭
- mysql - Sql查询将所有列合并为一列