本教程介绍了在 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(" 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(" www.eia.gov/dnav/pet/hi… 1", skiprows=2)
如果您没有在
sheetname= option
中指定工作表名称,则默认为第一张工作表。
5.读取分隔文件
假设您需要导入一个以空格分隔的文件。
mydata2 = pd.read_table(" www.ssc.wisc.edu/~bhansen/ec… ", sep="\s+" , header = None)
要包含变量名称,请使用 names= 选项,如下所示 -
mydata3 = pd.read_table(" www.ssc.wisc.edu/~bhansen/ec… ", 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
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
同样,您可以读取 .Rds格式的文件。
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)
print results.head()
10. 从 SPSS 文件导入数据
`import pyreadstat
df, meta = pyreadstat.read_sav("file.sav", apply_value_formats=True)`
如果您不需要值标签,请将apply_value_formats设置为 False。
11.读取行和列的样本
通过指定 nrows= 和 usecols=,您可以获取指定数量的行和列。
mydata7 = pd.read_csv("winterolympicsmedals.com/medals.csv", nrows =5, usecols =(1,5,7))
nrows = 5 表示您只想导入前 5 行,usecols= 指的是您要导入的指定列。
12.导入时跳过行
假设你想跳过前 5 行并想从第 6 行读取数据(第 6 行将是标题行)
mydata8 = pd.read_csv("winterolympicsmedals.com/medals.csv", skiprows =5)
13.指定值作为缺失值
通过包含 na_values= 选项,您可以将值指定为缺失值。在这种情况下,我们告诉 python 将点 (.) 视为缺失案例。
mydata9 = pd.read_csv("workingfile.csv", na_values=['.'])