读取CSV并将列数据作为numpy数组导入

时间:2019-07-28 19:51:49

标签: pandas

我有很多csv文件,都包含两列。一个是“能源”,另一个是“计数”。我的目标是导入这些数据,并将它们分别保留为numpy数组。假设X和Y将是两个numpy数组,其中X具有所有Energy且Y具有所有计数数据。但是问题出在我的csv文件中,每个数据之后我都有一个空白行,这似乎很麻烦。如何消除这些行并将数据保存为数组?

enter image description here

import pandas as pd
import glob
import numpy as np
import os 
import matplotlib.pyplot as plt


file_path = "path" ###file path


read_files = glob.glob(os.path.join(file_path,"*.csv")) ###get all files

X = [] ##create empty list
Y = [] ##create empty list

for files in read_files:
    df = pd.read_csv(files,header=[0])

    X.append(['Energy'])##store X data
    Y.append(['Counts'])##store y data

X=np.array(X)
Y=np.array(Y)
print(X.shape)
print(Y.shape)
plt.plot(X[50],Y[50])
plt.show()

理想情况下,如果我可以正确保存所有数据,我想得到我的图,但是由于数据没有正确保存,所以我没有得到任何图。

1 个答案:

答案 0 :(得分:0)

skip_blank_lines参数设置为True,这些行将不会读入数据框中:

df = pd.read_csv(files, header=[0], skip_blank_lines=True)

因此您的整个程序应如下所示:

...
df = pd.DataFrame()
for file in read_files:
    df.append(pd.read_csv(file, skip_blank_lines=True))

df.plot(x='Energy', y='Counts')
df.show()

# save both columns in one file
df.to_csv('myXYFile.csv', index=False)  
# or two files with one column each
df.Energy.to_csv('myXFile.csv', index=False)
df.Counts.to_csv('myYFile.csv', index=False)