Python Pandas常见文件读取方法【完整指南】

pandas是一个强大的Python数据分析库,它提供了多种读取文件的方法,支持多种文件格式。以下是pandas中常见的一些文件读取方法及其详细说明、常用参数、代码示例和数据示例。


1. read_csv()

(1)用途:

读取 CSV(Comma Separated Values)文件。

(2)常用参数:
  • filepath_or_buffer:文件路径或类似文件的对象。
  • sepdelimiter:字段分隔符,默认为逗号,
  • header:用作列名的行号,默认为0(即第一行)。
  • index_col:用作行索引的列编号或列名。
  • dtype:每列的数据类型。
  • nrows:需要读取的行数。
  • (3)代码示例:
    import pandas as pd
    
    # 读取 CSV 文件
    df = pd.read_csv('data.csv')
    
    # 显示数据的前几行
    print(df.head())
    
    (4)数据示例 (data.csv):
    Name,Age,City
    Alice,25,New York
    Bob,30,San Francisco
    Charlie,35,Los Angeles
    
    (5)header参数基本用法

    在Pandas库中,read_csv函数的header参数用于指定用作列名的行号或处理表头的方式。关于header参数的详细解释:

    1. 默认行为:当不指定header参数时,其默认值为0,表示将CSV文件中的第一行(索引为0的行)作为列名(表头)。

    2. 指定行号:如果CSV文件中的列名不在第一行,而是位于其他行,可以通过设置header参数为相应的行号(从0开始计数)来指定。例如,header=1表示将第二行作为列名。

    3. 多行表头:在某些情况下,CSV文件可能使用多行来定义列名。此时,可以将header参数设置为一个列表,例如header=[0,1],表示将第一行和第二行的内容合并作为列名。但请注意,这种方式在Pandas中并不常用,因为它可能会导致列名变得复杂且难以理解。

    4. 无表头:如果CSV文件没有包含列名,可以将header参数设置为None。在这种情况下,Pandas将自动生成默认的列名,如0, 1, 2,…。

    示例1:无表头,自定义列名

    假设CSV文件内容如下(没有列名):

    Alice,25,New York
    Bob,30,Los Angeles
    

    我们可以设置header=None并自定义列名:

    df = pd.read_csv('example_without_header.csv', header=None, names=['Name', 'Age', 'City'])
    print(df.head())
    

    输出:

      Name  Age       City
    0  Alice   25   New York
    1    Bob   30  Los Angeles
    
    示例2:无表头,不自定义列名

    使用 header=None 但是不自定义列名:
    header 设置为 None 时,并且不指定列名,在这种情况下,Pandas 会自动生成默认的列名,通常是 0, 1, 2, ... 等数字。

    import pandas as pd
    
    ```python
    df = pd.read_csv('example_without_header.csv', header=None)
    print(df.head())
    

    输出:

      0       1       2
    0  Alice   25   New York
    1    Bob   30  Los Angeles
    

    其中,0, 1, 2, ... 是Pandas自动生成的列名。

    2. read_table()

    (1)用途:

    读取类似表格的数据,如 TSV(Tab Separated Values)文件。

    (2)常用参数:
  • filepath_or_buffer:文件路径或类似文件的对象。
  • sepdelimiter:字段分隔符,默认为制表符\t
  • 其他参数与 read_csv() 类似。
  • (3)代码示例:
    import pandas as pd
    
    # 读取 TSV 文件
    df = pd.read_table('data.tsv', delimiter='\t')
    
    # 显示数据的前几行
    print(df.head())
    
    (4)数据示例 (data.tsv):
    Name	Age	City
    Alice	25	New York
    Bob	30	San Francisco
    Charlie	35	Los Angeles
    

    3. read_excel()

    (1)用途:

    读取 Excel 文件(.xlsx 或 .xls)。

    (2)常用参数:
  • io:文件路径或类似文件的对象。
  • sheet_name:要读取的工作表名称或索引,默认为0(即第一个工作表)。
  • header:用作列名的行号,默认为0。
  • dtype:每列的数据类型。
  • engine:用于解析 Excel 文件的引擎,如openpyxl(用于 .xlsx)或xlrd(用于较旧的 .xls)。
  • (3)代码示例:
    import pandas as pd
    
    # 读取 Excel 文件
    df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
    
    # 显示数据的前几行
    print(df.head())
    
    (4)数据示例 (data.xlsx – Sheet1):

    与 CSV 数据类似,但存储在 Excel 文件中。


    4. read_json()

    (1)用途:

    读取 JSON(JavaScript Object Notation)文件或 JSON 格式的字符串。

    (2)常用参数:
  • path_or_buf:文件路径或 JSON 格式的字符串。
  • orient:指定 JSON 数据的结构,如'split''records'等。
  • dtype:每列的数据类型。
  • lines:是否按行读取 JSON 数据。
  • (3)代码示例:
    import pandas as pd
    
    # 从字符串读取 JSON 数据
    json_data = '''
    [
      {"Name": "Alice", "Age": 25, "City": "New York"},
      {"Name": "Bob", "Age": 30, "City": "San Francisco"},
      {"Name": "Charlie", "Age": 35, "City": "Los Angeles"}
    ]
    '''
    df = pd.read_json(json_data)
    
    # 显示数据
    print(df)
    
    (4)数据示例 (JSON 字符串):

    见上述 JSON 字符串。


    5. read_html()

    (1)用途:

    从网页或HTML字符串中读取表格数据,并返回一个包含DataFrame对象的列表。

    (2)常用参数:
  • io:URL、文件路径或HTML字符串。
  • match:用于匹配表格的正则表达式字符串或正则表达式对象。
  • attrs:字典或列表,用于识别表格的属性,如{'id': 'table_id'}
  • parse_dates:将某些列解析为日期。
  • header:用作列名的行号,默认为0(如果未找到,则使用None)。
  • (3)Python 代码示例

    使用pandasread_html()函数来解析这个HTML字符串中的表格:

    import pandas as pd
    
    # 从网页URL读取HTML表格
    url = 'https://example.com/page-with-tables'
    dfs = pd.read_html(url, match='Table Title')  # 假设表格有'Table Title'这样的属性或文本
    
    # 由于我们只有一个表格,所以直接取第一个DataFrame
    df = dfs[0]
    
    # 显示数据
    print(df)
    

    运行上述代码,你应该会得到以下输出(DataFrame的格式化显示):

         Name  Age            City
    0   Alice   25        New York
    1     Bob   30  San Francisco
    2  Charlie   35    Los Angeles
    

    (4)HTML 字符串示例

    假设我们有一个简单的HTML字符串,它包含了一个表格:

    html_string = '''
    <html>
    <head>
        <title>Sample HTML Table</title>
    </head>
    <body>
        <table border="1">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Age</th>
                    <th>City</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Alice</td>
                    <td>25</td>
                    <td>New York</td>
                </tr>
                <tr>
                    <td>Bob</td>
                    <td>30</td>
                    <td>San Francisco</td>
                </tr>
                <tr>
                    <td>Charlie</td>
                    <td>35</td>
                    <td>Los Angeles</td>
                </tr>
            </tbody>
        </table>
    </body>
    </html>
    '''
    

    请注意,read_html()通常用于从网页中提取表格数据,但由于网页结构和内容可能会动态变化,因此通常建议使用更稳定的数据源,如CSV、Excel或JSON文件。

    注意事项:
  • read_html()可能不适用于所有网页和所有表格,因为它依赖于Pandas解析HTML的能力,这可能会受到HTML结构复杂性的影响。
  • 如果要处理的网页需要登录或其他形式的身份验证,可能需要使用如requests库之类的工具来获取网页内容,然后再将其传递给read_html()
  • read_html()返回的是一个包含DataFrame对象的列表。
  • 作者:叶阿猪

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Pandas常见文件读取方法【完整指南】

    发表回复