大家好,今天回顾五种引入数据的Python技术,并附有代码实例参考。
我们将使用Numpy、Pandas和Pickle包,所以要导入它们:
import numpy as np
import pandas as pd
import pickle
Manual功能
这是最困难的,因为你必须设计一个自定义函数,它可以为你加载数据,必须处理Python的正常归档概念,并利用它来读取一个.csv文件。
def load_csv(filepath):
data = []
col = []
checkcol = False
with open(filepath) as f:
for val in f.readlines():
val = val.replace("\n","")
val = val.split(',')
if checkcol is False:
col = val
checkcol = True
else:
data.append(val)
df = pd.DataFrame(data=data, columns=col)
return df
输出
myData = load_csv('100 Sales Record.csv')
print(myData.head())
Numpy.loadtxt函数
这是Numpy中的一个内置函数,Numpy是Python中一个著名的数值库。它是一个非常简单的加载数据的函数。它对于读取相同数据类型的数据非常有用。
当数据比较复杂时,使用这个函数很难读取,但当文件比较容易和简单时,这个函数真的很强大。
df = np.loadtxt('convertcsv.csv', delimeter = ',')
这里我们简单地使用了loadtxt函数,因为这是一个CSV文件,所以在delimeter中传递了','。
现在,如果我们打印df,我们将看到我们的数据在相当体面的numpy数组中,可以随时使用。
print(df[:5,:])
Numpy.genfromtxt()
我们将使用我们在第一个例子中使用的数据集'100 Sales Records.csv'来证明我们可以在其中有多种数据类型。
data = np.genfromtxt('100 Sales Records.csv', delimiter=',')
为了更清楚地看到它,我们可以直接用数据框架的格式来看:
>>> pd.DataFrame(data)
只需添加另一个dtype参数,并将dtype设置为None,这意味着它必须照顾到每一列的数据类型本身。而不是将整个数据转换为单一的dtype。
data = np.genfromtxt('100 Sales Records.csv', delimiter=',', dtype=None)
然后再进行输出:
>>> pd.DataFrame(data).head()
Pandas.read_csv()
Pandas是一个非常流行的数据处理库,而且它非常常用。它的一个非常重要和成熟的函数是read_csv(),它可以非常容易地读取任何.csv文件并帮助我们操作它。让我们在我们的100-销售记录数据集上做一下。
>>> pdDf = pd.read_csv('100 Sales Record.csv')
>>> pdDf.head()
Pandas.read_csv提供了很多其他的参数来调整我们的数据集,例如在我们的convertcsv.csv文件中,我们没有列名,所以我们可以把它读成。
>>> newdf = pd.read_csv('convertcsv.csv', header=None)
>>> newdf.head()
我们可以看到,它已经读取了没有标题的csv文件。
Pickle
当你的数据不是一个好的、人类可读的格式时,你可以使用pickle把它保存为二进制格式,然后你可以使用pickle库轻松地重新加载它。
with open('test.pkl','wb') as f:
pickle.dump(pdDf, f)
这将创建一个新的文件test.pkl,里面有我们来自Pandas的pdDf标题。
现在要用pickle打开它,我们只需要使用pickle.load函数。
with open("test.pkl", "rb") as f:
d4 = pickle.load(f)
>>> d4.head()
而在这里,我们已经成功地从pandas.DataFrame格式的pickle文件中加载数据。
你现在知道了在Python中加载数据文件的5种不同方法,当你在日常项目中工作时,这些方法可以帮助你以不同方式加载数据集。