Python读取具有不同行数的csv文件

Python读取具有不同行数的csv文件,python,matplotlib,Python,Matplotlib,我有一个csv文件,格式如下 x1,y1,x2,y2,x3,y3 1,1,2,2,6.5,7.5 2,2,-1,-1,, ,,-2,-3,, ,,-5,-5,, 我想绘制列(x1,y1),(x2,y2)和(x3,y3),例如 rd1 = some_csv_reader('filename.csv') matplotlib.pyplot.plot(rd1[:,0],rd1[:,1],rd1[:,2],rd1[:,3]) 我试着使用pandas.read_csv(),但它将空条目放入nanpan

我有一个csv文件,格式如下

x1,y1,x2,y2,x3,y3
1,1,2,2,6.5,7.5
2,2,-1,-1,,
,,-2,-3,,
,,-5,-5,,
我想绘制列
(x1,y1)
(x2,y2)
(x3,y3)
,例如

rd1 = some_csv_reader('filename.csv')
matplotlib.pyplot.plot(rd1[:,0],rd1[:,1],rd1[:,2],rd1[:,3])
我试着使用pandas.read_csv(),但它将空条目放入
nan
pandas.fwf()
不分隔列。我希望在读取过程中排除数组中的任何空位置,而不是使用类似的方法。我该怎么做?

  • 如果要打印数据,请选择两个一组的列,然后打印每组。
    • 列表理解创建了一个
      元组的
      列表
      • [索引(['x1',y1',dtype='object')、索引(['x2',y2',dtype='object')、索引(['x3',y3',dtype='object')]
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
#阅读csv
df=pd.read\u csv('test.csv'))
#选择任意两列并打印它们
N=2#要合并的连续列数
对于[df.columns[n:n+n]中的d,对于范围内的n(0,len(df.columns),n)]:
x、 y=d
plt.散射(x,y,数据=df,标签=y)
plt.legend()
  • 请注意,有些点是重叠的

作为直线图
  • 如果需要,使用标记帮助区分数据
markers=['o'、'*'、'+']
N=2
对于枚举中的i,d([df.columns[n:n+n]表示范围(0,len(df.columns),n)]:
x、 y=d
plt.plot(x,y',,marker=markers[i],data=df,label=y)
plt.legend()

将每组
x
y
组合成一个组
#选择每组两列,并将数据框附加到列表中
df_list=list()
N=2
对于[df.columns[n:n+n]中的d,对于范围内的n(0,len(df.columns),n)]:
d=df[d]
d、 columns=['x','y']#重命名列
df_列表。追加(d)
#连接数据帧列表
dfc=pd.concat(df_列表)
#清理数据帧
dfc=dfc.dropna().drop_duplicates().sort_值('x').reset_索引(drop=True)
#显示器(dfc)
xy
0 -5.0 -5.0
1 -2.0 -3.0
2 -1.0 -1.0
3  1.0  1.0
4  2.0  2.0
5  6.5  7.5
#密谋
plt.plot('x','y','',data=dfc)

查看此帖子:您希望有什么样的行为?具体来说,您希望空位置使用什么值?我个人更喜欢使用
nan
,除非这是数据中的一个可能值。如果要将其更改为空字符串(这意味着具有空值的列将不具有数字数据类型,因此在使用代码时必须进行一些转换),可以使用
pd.read\u csv(filename,keep\u default\u na=False)