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

Posted

技术标签:

【中文标题】Python读取具有不同行数的csv文件【英文标题】:Python read csv file with different number of rows 【发布时间】:2020-12-24 19:04:50 【问题描述】:

我有一个格式如下的 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() 不分离列。我想在读取过程中排除数组中的任何空位置,而不是使用https://***.com/a/11453235/11638153 之类的东西。我该怎么做?

【问题讨论】:

查看这篇文章:***.com/questions/26837998/… 你想要什么样的行为?具体来说,您希望将什么值用于空仓?我个人更喜欢使用nan,除非这是数据中的一个可能值。如果您想将其更改为空字符串(这意味着具有空值的列将不具有数值数据类型,因此您在使用代码时必须进行一些转换)您可以使用pd.read_csv(filename, keep_default_na=False) 【参考方案1】: 如果重点是绘制数据,请选择两个一组的列,然后绘制每个组。 列表推导式创建 listtuples [Index(['x1', 'y1'], dtype='object'), Index(['x2', 'y2'], dtype='object'), Index(['x3', 'y3'], dtype='object')]
import pandas as pd
import matplotlib.pyplot as plt

# read the csv
df = pd.read_csv('test.csv')

# select ever two columns and plot them
N = 2  # number of consecutive columns to combine
for d in [df.columns[n:n+N] for n in range(0, len(df.columns), N)]:
    x, y = d
    plt.scatter(x, y, data=df, label=y)
plt.legend()
请注意,有些点是重叠的。

作为线图

如果需要,使用标记来帮助区分数据。
markers = ['o', '*', '+']

N = 2
for i, d in enumerate([df.columns[n:n+N] for n in range(0, len(df.columns), N)]):
    x, y = d
    plt.plot(x, y, '', marker=markers[i], data=df, label=y)
plt.legend()

xy 的每组组合成一个组

# select each group of two columns and append the dataframe to the list
df_list = list()
N = 2
for d in [df.columns[n:n+N] for n in range(0, len(df.columns), N)]:
    d = df[d]
    d.columns = ['x', 'y']  # rename columns
    df_list.append(d)

# concat the list of dataframes
dfc = pd.concat(df_list)

# clean the dataframe
dfc = dfc.dropna().drop_duplicates().sort_values('x').reset_index(drop=True)

# display(dfc)
     x    y
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

# plot
plt.plot('x', 'y', '', data=dfc)

【讨论】:

以上是关于Python读取具有不同行数的csv文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中读取具有不同列数的 CSV 文件

在 Excel 查询编辑器中合并具有不同列数的 CSV 文件文件夹

python读取csv文件跳过前几行

python3中使用使用read_csv( )读取csv文件,文件路径中含有中文,无法读取怎么处理?

2018-01-06 python读取csv某一行

自动 CSV 文件生成,在 Oracle 10g 中具有不同列数的两个标题级别的标题