本教程介绍了在 Python 中读取数据的各种方法。数据可以是任何流行的格式——CSV、TXT、XLS/XLSX (Excel)、sas7bdat (SAS)、Stata、Rdata (R) 等。在 python 环境中加载数据是分析数据的最初始步骤。
在导入外部文件时,我们需要检查以下几点 -
- 检查标题行是否存在
- 将特殊值作为缺失值处理
- 变量(列)中的一致数据类型
- 日期格式一致的日期类型变量。
- 读取外部数据时不会截断行
安装和加载 pandas 包
pandas是一个强大的数据分析包。它使数据探索和操作变得容易。它有几个函数可以从各种来源读取数据。如果您使用的是Anaconda,则必须已经安装了 pandas。您需要使用以下命令加载包 -
将熊猫导入为 pd如果未安装 pandas 包,您可以通过在 Ipython 控制台中运行以下代码来安装它。如果您使用的是Spyder,则可以在 Spyder 中的 Ipython 控制台中提交以下代码。
!pip 安装熊猫如果您使用的是Anaconda,则可以尝试使用以下代码行来安装 pandas -
!conda 安装熊猫
1.导入CSV文件
重要的是要注意,在指定文件路径时,单个反斜杠不起作用。您需要将其更改为正斜杠或再添加一个反斜杠,如下所示import pandas as pd
mydata= pd.read_csv("C:\\Users\\Deepanshu\\Documents\\file1.csv")
如果原始数据文件中没有标题(标题)
mydata1 = pd.read_csv("C:\\Users\\Deepanshu\\Documents\\file1.csv", header = None )您需要包含header = None选项来告诉 Python 数据中没有列名(标题)。
添加列名
我们可以使用 names= 选项来包含列名。
mydata2 = pd.read_csv("C:\\Users\\Deepanshu\\Documents\\file1.csv", header = None, names = ['ID', 'first_name', 'salary'] )也可以使用以下命令单独添加变量名。
mydata1.columns = ['ID', 'first_name', 'salary']
2.从URL导入文件
您无需执行其他步骤即可从 URL 获取数据。只需将URL放入 read_csv() 函数(仅适用于存储在 URL 中的 CSV 文件)。mydata = pd.read_csv("http://winterolympicsmedals.com/medals.csv")
3.读取文本文件
我们可以使用 read_table() 函数从文本文件中提取数据。我们还可以使用带有 sep= "\t" 的 read_csv() 从制表符分隔的文件中读取数据。mydata = pd.read_table("C:\\Users\\Deepanshu\\Desktop\\example2.txt")
mydata = pd.read_csv("C:\\Users\\Deepanshu\\Desktop\\example2.txt", sep ="\t")
4.读取Excel文件
read_excel() 函数可用于将 excel 数据导入 Python。
mydata = pd.read_excel("https://www.eia.gov/dnav/pet/hist_xls/RBRTEd.xls",sheetname="Data 1", skiprows=2)
5.读取分隔文件
假设您需要导入一个以空格分隔的文件。mydata2 = pd.read_table("http://www.ssc.wisc.edu/~bhansen/econometrics/invest.dat", sep="\s+" , header = None)要包含变量名称,请使用 names= 选项,如下所示 -
mydata3 = pd.read_table("http://www.ssc.wisc.edu/~bhansen/econometrics/invest.dat", sep="\s+", names=['a', 'b', 'c' , 'd'])
6. 读取 SAS 文件
我们可以使用 read_sas() 函数导入 SAS 数据文件。mydata4 = pd.read_sas('cars.sas7bdat')
pyreadstat
如果你有一个很大的 SAS 文件,你可以试试比 pandas 更快的 命名包。它相当于haven
R 中的包,提供了从 SAS、SPSS 和 Stata 中读取数据的简单快捷的方法。要安装这个包,你可以使用命令pip install pyreadstat
import pyreadstat
df, meta = pyreadstat.read_sas7bdat('cars.sas7bdat')
# done! let's see what we got
print(df.head())
print(meta.column_names)
print(meta.column_labels)
print(meta.number_rows)
print(meta.number_columns)
7. 读取 Stata 文件
我们可以通过 read_stata() 函数加载 Stata 数据文件。mydata41 = pd.read_stata('cars.dta')
pyreadstat
package 允许您从 stata 文件中提取值标签。
import pyreadstat
df, meta = pyreadstat.read_dta("cars.dta")
apply_value_formats
为TRUE
df, meta = pyreadstat.read_dta("cars.dta", apply_value_formats=True)
8.导入R数据文件
使用pyreadr包,您可以加载.RData和.Rds格式的文件,这些文件通常包含 R 数据帧。您可以使用以下命令安装此软件包-pip 安装 pyreadr使用read_r()函数,我们可以导入R数据格式文件。
import pyreadr同样,您可以读取.Rds格式的文件。
result = pyreadr.read_r('C:/Users/sampledata.RData')
print(result.keys()) # let's check what objects we got
df1 = result["df1"] # extract the pandas data frame for object df1
9.读取SQL表
我们可以从 SQL 数据库(SQL Server / Teradata)中提取表。看下面的程序——
数据库服务器
您可以通过建立连接从存储在 SQL Server 中的表中读取数据。您需要有服务器、用户 ID (UID)、数据库详细信息才能建立连接。
import pandas as pd
import pyodbc
conn = pyodbc.connect("Driver={SQL Server};Server=serverName;UID=UserName;PWD=Password;Database=RCO_DW;")
df = pd.read_sql_query('select * from dbo.Table WHERE ID > 10', conn)
df.head()
天睿数据
您需要导入Teradata 模块,这使得 python 可以轻松地与 Teradata 数据库集成。
将熊猫导入为 pd 导入 teradata udaExec = teradata.UdaExec(appName="HelloWorld", version="1.0", 日志控制台=假) session = udaExec.connect(method="odbc", USEREGIONALSETTINGS="N", 系统=“tdprod”, 用户名="xxx", 密码="xxx"); query = "SELECT * FROM 航班" df = pd.read_sql(查询,会话)
import pandas as pd import teradata udaExec = teradata.UdaExec(appName="HelloWorld", version="1.0", logConsole=False) session = udaExec.connect(method="odbc", USEREGIONALSETTINGS="N", system="tdprod", username="xxx", password="xxx"); query = "SELECT * FROM flight" df = pd.read_sql(query , session)
解释
UdaExec
提供 DevOps 支持功能,例如配置和日志记录。- 您可以在
appName
和中分配任何名称和版本version
logConsole=False
告诉 Python 不要登录到控制台。system="tdprod"
指的是我们使用 ODBC 作为连接方法连接的系统的名称USEREGIONALSETTINGS="N"
用于确保可以加载浮点值并使小数点分隔符为“.”
.db
扩展文件,它是一个数据库文件,你想从中提取数据。
import sqlite3
from pandas.io import sql
conn = sqlite3.connect('C:/Users/Deepanshu/Downloads/flight.db')
query = "SELECT * FROM flight"
results = pd.read_sql(query, con=conn)
打印结果.head()
10. 从 SPSS 文件导入数据
导入 pyreadstat
df, meta = pyreadstat.read_sav("file.sav", apply_value_formats=True)
如果您不需要值标签,请将apply_value_formats设置为 False。
11.读取行和列的样本
通过指定 nrows= 和 usecols=,您可以获取指定数量的行和列。mydata7 = pd.read_csv("http://winterolympicsmedals.com/medals.csv", nrows =5, usecols =(1,5,7))nrows = 5 表示您只想导入前 5 行,usecols= 指的是您要导入的指定列。
12.导入时跳过行
假设你想跳过前 5 行并想从第 6 行读取数据(第 6 行将是标题行)mydata8 = pd.read_csv("http://winterolympicsmedals.com/medals.csv", skiprows =5)
13.指定值作为缺失值
通过包含 na_values= 选项,您可以将值指定为缺失值。在这种情况下,我们告诉 python 将点 (.) 视为缺失案例。mydata9 = pd.read_csv("workingfile.csv", na_values=['.'])