相关文章推荐

本教程介绍了在 Python 中读取数据的各种方法。数据可以是任何流行的格式——CSV、TXT、XLS/XLSX (Excel)、sas7bdat (SAS)、Stata、Rdata (R) 等。在 python 环境中加载数据是分析数据的最初始步骤。

在导入外部文件时,我们需要检查以下几点 -

  • 检查标题行是否存在
  • 将特殊值作为缺失值处理
  • 变量(列)中的一致数据类型
  • 日期格式一致的日期类型变量。
  • 读取外部数据时不会截断行
  • 1.导入CSV文件

    2.从URL导入文件

    3.读取文本文件

    4.读取Excel文件

    5.读取分隔文件

    6. 读取 SAS 文件

    7. 读取 Stata 文件

    8.导入R数据文件

    9.读取SQL表

    10. 从 SPSS 文件导入数据

    11.读取行和列的样本

    12.导入时跳过行

    13.指定值作为缺失值

    安装和加载 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')

    pyreadstatpackage 允许您从 stata 文件中提取值标签。

    import pyreadstat
    df, meta = pyreadstat.read_dta("cars.dta")
    

    要获取标签,请设置apply_value_formatsTRUE

    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=['.'])

    粉丝
     
    推荐文章