使用Python导入数据

Tavish Aggarwal.
I

N今天的世界,各种设备都有很多数据。数据的格式从平面文件变化为表格结构。在此帖子中,我们将研究Python软件包,用于使用Python导入数据。我们将使用Python软件包查看以下文件类型的技术: -

 

  1. 平面文件 - .txt,.csv文件
  2. 腌制文件
  3. Excel文件
  4. SAS文件
  5. stata文件
  6. HDF5文件
  7. 垫文件
  8. 关系型数据库
  9. 从Web读取数据

如果您不熟悉使用Pandas,Numpy等Python软件包请通过帖子 python数据科学包.

如果您想在使用Python潜入导入文件之前,请先知道/刷新Python概念,我建议通过以下帖子进行:

  1. Python用于数据科学 - 第1部分

  2. Python用于数据科学 - 第2部分

  3. Python用于数据科学 - 第3部分

让我们开始使用平面文件。

平面文件

平面文件是数据以纯文本格式存储的文件。一些平面文件的格式为.txt(文本文件),.csv(逗号分隔文件)等。让我们看看如何从文本文件中读取数据。

要从文本文件中读取数据,基本上是三个步骤:

  1. 打开文件
  2. 从文件中读取数据
  3. 关闭文件

从文本文件中读取数据的代码:

文件 = open('sample_file.txt', mode='r') # r syands for read mode

print(file.readline()) # Reading 1st line of file

file.close()

使用上下文管理器读取文件的更好方法,使用此方法我们不必担心从中读取数据后关闭文件。

with open('sample_file.txt') as file:
    print(file.readline()) # Reading 1st line of file

您可以尝试使用文件 sample_file.txt..

我们可以使用numpy或pandas读取.csv文件。在这里,我将展示读取.csv文件的方法。

使用numpy数组:

numpy数组提供了两个不同的函数,我们可以使用它读取.csv文件。这些都是:

  1. loadtxt()
  2. recfromcsv()

让我们看看如何使用两个函数从文件中读取数据。请参阅下面显示的代码:

import numpy as np

file = 'population.csv'

population = np.recfromcsv(file, delimiter=',')

population_data = np.loadtxt(file, delimiter='\t', dtype=float, skiprows=1)

在这里,我们使用Skiprows选项作为第一个数据集是标题。

你可以尝试使用 人口.CSV file

使用熊猫:

如果您一直在关注我们已经使用熊猫导入了.csv文件。如果不是不用担心,我会再次展示它。但在这里,我们将前进并转换为Numpy数组生成的Pandas DataSet。让我们在行动中看到这一点。

data = pd.read_csv(file, nrows =5) # Reading 5 rows

data_array = data.values

print(type(data_array))

#output

腌制文件 

泡菜文件扩展名与用于实现强大算法的Python泡块模块关联,用于序列化和去序列化Python对象结构。

泡菜文件存储表示对象的字节流。让我们首先了解如何创建一个腌制文件,然后我们将看到如何导入泡菜文件。

import pickle
# Writting to pickled file
a = ['Python','Pickled','file']

file_Name = "撒布德莫"
fileObject = open(file_Name,'wb')
pickle.dump(a,fileObject)
fileObject.close()

# Reading from pickled file
fileObject = open(file_Name,'rb')

b = pickle.load(fileObject)
print(b)

现在让我们看看如何使用上下文管理器方法导入泡沫文件:

import pickle

file_Name = "撒布德莫"

with open(file_Name, 'rb') as file:
    text = pickle.load(file)

print(text)

你可以尝试使用 撒布德莫 file.

Excel文件

如果您使用过Microsoft Office,则必须熟悉Excel文件。 Excel文件看起来与表非常相似。请参阅下面显示的示例以使用Pandas包导入Excel文件:

import pandas as pd

file = 'sampleFile.xlsx'

xl = pd.ExcelFile(file)

#sheet names in  excel file
print(xl.sheet_names)

# Load a sheet into a DataFrame by name
df = xl.parse('Sheet1')


print(df.head())

# Load a sheet into a DataFrame by index
df_index = xl.parse(0)

# Print the head of the DataFrame df2
print(df_index.head())

你可以测试 samplefile.xlsx.

SAS文件

SAS文件通常由名为的软件生成 统计分析软件.

该软件通常用于数据建模和分析,因此使其在数据科学家中流行。我们可以在Python中使用package sas7bdat导入SAS文件。让我们查看导入SAS文件的代码:

from sas7bdat import SAS7BDAT

with SAS7BDAT('test.sas7bdat') as file:
    df_sas = file.to_data_frame()

print(df_sas.head())

你可以测试 test.sas7bdat

萨拉纳 文件

可能有多个资源生成.dta文件,但生成.dta文件的最常用方式是使用stata数据分析软件。使用此软件我们可以生成文件存储数据集的.dta文件。

使用Python导入.dta文件的方法如下所示:

import pandas as pd

df = pd.read_stata('profits.dta')

print(df.head())

你可以测试 profits.dta文件。

HDF5文件

HDF5是管理极大且复杂的文件的技术。它包含多维科学数据阵列。 H5文件常用于航空航天,物理,工程,财务等。让我们看看我们如何使用H5PY包导入HDF5文件:

import numpy as np
import h5py

file = 'test_data.hdf5'

data = h5py.File(file, 'r')

for key in data.keys():
    print(key)

group = data['testing']

for key in group.keys():
    print(key)

你可以尝试 test_data.hd5..

垫文件

这是MATLAB程序生成的文件类型。

要使用Python包导入.mat文件scipy.io请参阅下面显示的代码:

import scipy.io

mat = scipy.io.loadmat('test_file.mat')

# Print the keys of the MATLAB file
print(mat.keys())

你可以尝试 test_file.mat..

关系型数据库

关系数据库由该组表组成,该组具有列和行的形式的数据。并且可以在不同表的列之间建立关系。

流行关系数据库:

  1. postgres.
  2. mysql.
  3. Sqllite.

我不会涵盖基础知识关于关系数据库的工作原理。假设是您对任何关系数据库都有一些了解。

让我们讨论SQLLITE数据库并将表导入数据集。

from sqlalchemy import create_engine

engine = create_engine('sqlite:///localhost.database') #connection string to database

table_names = engine.table_names()

print(table_names)

在这里,我们正在使用Sqlalchemy包来连接到SQLite数据库。上面的代码将从我们的数据库中获取所有表。

让我们看看我们如何使用SQL查询导入数据:

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('sqlite:///Chinook.sqlite')

with engine.connect() as con:
    rs = con.execute("SELECT LastName, Title FROM Employee")
    dfAll = pd.DataFrame(rs.fetchall()) # To fetch all the results
    df = pd.DataFrame(rs.fetchmany(size=3)) # To fetch top 3 results
    df.columns = rs.keys()

print(df.head())

建议使用上下文管理器连接到数据库。这样做会减少关闭数据库连接的努力。

使用上面所示的方式我们通过创建引擎来查询数据库,连接到发动机,查询和存储熊猫。 Pandas提供了更为分类的方式来查询数据库:

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('sqlite:///Chinook.sqlite')

df = pd.read_sql_query("select * from Album", engine)

print(df.head())

Pandas provide read_sql_query function using which we can directly query and store results to data sets.

从Web读取数据

Python软件包可以从Web中读取文件。

可以有两种方法可以使用数据源作为来自Web的文件创建我们的数据集。这些都是:

  1. 我们可以从Web本地导入文件并创建数据集
  2. 我们可以直接创建数据集,而无需在本地系统上存储文件

首先,让我们看看我们如何通过将文件下载到本地系统来创建数据集:

from urllib.request import urlretrieve
import pandas as pd

# Assign url of file: url
url = '//s3.amazonaws.com/assets.datacamp.com/production/course_1606/datasets/winequality-red.csv'

# Save file locally
urlretrieve(url, 'test.csv')

df = pd.read_csv('test.csv', sep=';')
print(df.head())

我们可以避免将文件保存到本地系统并直接从URL读取。让我们看看我们如何直接创建数据集,而无需将文件下载到本地系统:

import pandas as pd

url = '//s3.amazonaws.com/assets.datacamp.com/production/course_1606/datasets/winequality-red.csv'

df = pd.read_csv(url, sep=';')
print(df.head())

笔记: 我们 can also read excel file from web using pd.read_excel() function. The output of function will be sheet names.

请求和 urlib. package:

使用Packages Urailib和请求包,我们可以直接从Web读取文件。

首先,让我们看看使用URLLIB包从Web导入文件的方法:

from urllib.request import urlopen, Request

url = "//www.ruidahuigou.cn"

request = Request(url, headers={'User-Agent' : "Magic Browser"})
response = urlopen(request)
html = response.read()

print(html)

response.close()

我们还可以使用使用请求包使用Urllib包执行相同的操作。在所有包裹请求中,这是最下载的包。让我们看看请求包在行动中:

import requests

url = "//www.ruidahuigou.cn"

r = requests.get(url)
text = r.text

print(text)

美丽群组

我们上面得到的数据没有用。为了使最多的是我们需要从我们上面得到的HTML获取结构化数据。为此,我们使用Beautifulsoup包:

import requests
from bs4 import BeautifulSoup

url = '//www.techladder.in'

r = requests.get(url)

html_doc = r.text

soup = BeautifulSoup(html_doc, "lxml")

# Pretify HTML DOM
pretty_soup = soup.prettify()

print(pretty_soup)

# Extract page title
page_title= soup.title

print(page_title)

#Extract all the text from the page
page_text = soup.get_text()

print(page_text.replace('\n\n','\n'))

# Find all a tags on page
a_tags = soup.find_all('a')

for link in a_tags:
    print(link.get('href'))

将API响应读为JSON

JSON用于在服务器和浏览器之间进行通信。 JSON是一个密钥值对的集合。让我们看看一个样本API,返回响应作为JSON。

import requests

url = '//reqres.in/api/users?page=1'

r = requests.get(url)

json_data = r.json()
print(json_data)

# Iterate over the keys and value of JSON
for k in json_data.keys():
    print(k + ': ', json_data[k])

 NOTE: 我们  use json.load() function to read JSON file stored in local system.

现在,我们熟悉将任何类型的文件加载到数据集中的技术。在下一个帖子中,我将解释数据科学家用于清理数据的技术。

作者信息

Tavish Aggarwal.

网站: http://tavishaggarwal.com

Tavish Aggarwal.是一个数据科学家 在一个海德拉巴工作,具有广泛的经验,在跨电子商务,财务,医疗保健等等不同领域解决现实世界的业务问题。 他对技术充满热情,喜欢在团队中工作。