python数据分析 pandas库-数据的读取和保存

news2024/11/14 16:43:37

python数据分析 pandas库-数据读取和保存

一、数据文件

在数据分析中,数据的读取是非常重要的一步。Pandas 提供了丰富的接口来读取各种格式的数据文件,例如 CSV、Excel、JSON、SQL 数据库等。接下来我们将详细说明如何使用 Pandas 读取不同格式的数据文件。


1、CSV文件的读取和保存

1) 读取 CSV 文件(pandas.read_csv())

CSV(Comma-Separated Values)是最常见的文本数据格式之一,通常用于保存表格数据。Pandas 提供了 pd.read_csv() 函数来读取 CSV 文件。

df = pd.read_csv('data.csv')
参数:
  • filepath_or_buffer:它是read_csv()的第一个参数,也是最重要的参数。它指定了要读取的 CSV 文件的路径或 URL。
  • sep:指定分隔符,默认是逗号 ,,可以自定义为其他符号,如分号 ;
    • 例如:
df = pd.read_csv('data.csv',sep=';')

image-20240915161028283

​ 分隔符错了,他们就会变成一列。

  • header:指定哪一行作为列名,默认是第 0 行。

image-20240915161321563

  • names:如果文件没有列名,可以通过 names 指定列名列表。

image-20240915161504436

  • index_col:指定哪一列作为索引列,默认不使用,但我参数填3时,第四列就成为了索引,原索引向前移了一位。
  • image-20240915161626423
  • usecols:指定要读取的列,可以通过列名或列号来选择。它是参数可以是列名,也可以是列序号,也就是设置它以后,只读取你想要读取的列,其他列就不读取,节省了内存空间。
  • image-20240915162053380
2)保存CSV文件(to_csv())
参数

path_or_buf:

  • 说明: 这是文件保存路径或对象。如果是 None,则返回 CSV 数据作为字符串,而不是写入文件。

  • 类型: strNone

    df.to_csv('data.csv')  # 保存为 data.csv 文件
    df.to_csv(None)  # 返回 CSV 数据作为字符串
    

    image-20240915163424781

sep:

  • 说明: 指定字段之间的分隔符。默认是逗号(,)。你可以设置为其他字符,与read_csv()函数的意思一直,只不过这里是设置保存在文本中的分隔符号

  • 类型: str

    df.to_csv('data.csv')  # 保存为 data.csv 文件
    df.to_csv('data.csv', sep=';')  # 使用逗号作为分隔符
    

    image-20240915163649330

na_rep:

  • 说明: 用于表示缺失数据的字符串。如果 DataFrame 中有缺失值,会用这个字符串代替。

  • 类型: str

  • 示例

    df = pd.read_csv(filepath_or_buffer='data.csv', sep=',', header=0, index_col=0)
    df.loc['张三','国家'] = '333' 
    df.to_csv('data1.csv', sep=',',na_rep="我是缺失的数据")
    csv_string = df.to_csv()
    print(csv_string)
    

    image-20240915175022724

float_format:

  • 说明: 格式化浮点数的格式字符串。例如 '%0.2f' 表示保留两位小数。

  • 类型: str

  • 示例

    :

    df.to_csv('data.csv', float_format='%0.3f')  # 浮点数格式为两位小数
    

    image-20240915182606968

columns:

  • 说明: 指定要写入 CSV 文件的列名。如果不指定,则写入所有列。

  • 类型: listNone

  • 示例

    :

    df.to_csv('data.csv', columns=['身份id'])  # 只保存 '身份id' 和 '数字id' 列
    

    image-20240915183054471

header:

  • 说明: 是否写入列名。可以是布尔值(TrueFalse)或列名列表。如果为 True,则写入列名;如果为 False,则不写入列名。如果提供列名列表,则会覆盖默认的列名。

  • 类型: boollist

  • 示例

    :

    df.to_csv('data.csv', header=True)  # 写入列名
    df.to_csv('data.csv', header=False)  # 不写入列名
    df.to_csv('data.csv', header=['1', '2', '3'])  # 使用自定义列名,自定义的列名数量必须要和源数据的一致
    

    image-20240915183441010

index:

  • 说明: 是否写入行索引。默认为 True,即写入行索引。如果设置为 False,则不写入行索引。

  • 类型: bool

  • 示例

    :

    df.to_csv('data.csv', index=True)  # 写入行索引
    df.to_csv('data.csv', index=False)  # 不写入行索引
    

    image-20240915183850724

index_label:

  • 说明: 行索引的列名。如果 indexTrue,可以指定索引列的名称。如果不指定,则不设置索引列名。

  • 类型: strNone

  • 示例

    :

    df.to_csv('data.csv', index=True, index_label='索引')  # 行索引列名为 '索引'
    

    image-20240915184011766

mode:

  • 说明: 文件打开模式。默认是 'w'(写模式)。可以设置为 'a'(追加模式),将数据追加到现有文件的末尾。

  • 类型: str

  • 示例

    :

    df.to_csv('data.csv', mode='w')  # 写模式(覆盖原文件)
    df.to_csv('data.csv', mode='a')  # 追加模式(追加到文件末尾)
    

compression:

  • 说明: 文件压缩方式。可以设置为 'infer'(根据文件扩展名自动推断)、'bz2''gzip''xz''zip' 等。如果使用压缩格式,可以通过 compression_options 参数提供额外的压缩选项。

  • 类型: strdictNone

  • 示例

    :

    df.to_csv('data.csv.gz', compression='gzip')  # 使用 gzip 压缩
    df.to_csv('data.zip', compression='zip')  # 使用 zip 压缩
    

2. Excel 文件

Excel 是常用的电子表格格式,Pandas 支持使用 pd.read_excel() 函数读取 .xlsx.xls 文件。注意,这需要安装额外的依赖库,如 openpyxl(用于 .xlsx)或 xlrd(用于 .xls)。

# 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 查看前几行数据
print(df.head())
1)读取excel文件(pandas.to_excel())
  1. io:

    • 说明: 文件路径、URL、Excel 文件对象、或 StringIO 对象。

    • 类型: str, pathlib.Path, file-like object, StringIO

      df = pd.read_excel(io=pathlib.Path('data.xlsx'))
      

      image-20240915201733770

  2. sheet_name:

    • 说明: 要读取的工作表名称或位置。如果有多个工作表,可以使用列表指定多个工作表。

    • 类型: str, int, list, None

      df = pd.read_excel('data.xlsx', sheet_name='Sheet1')  # 读取名为 'Sheet1' 的工作表
      df = pd.read_excel('data.xlsx', sheet_name=0)  # 读取第一个工作表
      df = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])  # 读取多个工作表
      

      image-20240915202028079

  3. header:

    • 说明: 指定哪一行作为列名。默认为 0,表示第 0 行作为列名。可以设置为 None 表示没有列名,或提供行号作为列名,如果设置其他行序号,则会跳过这个序号之前的数据。

    • 类型: int, list, None

      df = pd.read_excel('data.xlsx', header=0)  # 使用第 0 行作为列名
      df = pd.read_excel('data.xlsx', header=None)  # 不使用任何行作为列名
      

      image-20240915202417425

  4. names:

    • 说明: 如果 header=None,可以通过 names 参数指定列名列表,列名的数量取决于 names 列表的长度,从第一列开始逐一命名。

    • 类型: list

      df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'])
      

      image-20240915202843211

      • names 列表中的每一个值都会被设置为对应列的列名,不会影响 Series 的 name 属性。

      • 如果列数比 names 指定的多余或不足,可能会出现列名缺失或数据丢失的问题。

  5. index_col:

    • 说明: 指定哪一列作为行索引。默认为 None,即不设置索引列。

    • 类型: int, str, None

      df = pd.read_excel('data.xlsx', index_col=3)  # 使用第 0 列作为行索引
      

      image-20240915203400751

  6. usecols:

    • 说明: 指定要读取的列。可以使用列名、列号、或列名的范围(例如 'A:C'指定 Excel 文件中的列字母范围)。可以是字符串、列表或范围。

    • 类型: str, list, callable

      df = pd.read_excel('data.xlsx', usecols='A:C')  # 读取 A 到 C 列Excel 文件中的列字母范围
      df = pd.read_excel('data.xlsx', usecols=['身份id','数字id']) Series列名字
      df = pd.read_excel('data.xlsx', usecols=[0, 2, 4])  # 读取第 0、2、4 列 列序号
      

      image-20240915205057505

  7. dtype:

    • 说明: 指定列的数据类型。可以是数据类型的字典,也可以是具体的类型。

    • 类型: type or dict

      df = pd.read_excel('data.xlsx', dtype={'A': float, 'B': str})  # 指定 A 列为 float 类型,B 列为 str 类型
      
  8. skiprows:

    • 说明: 跳过文件开头的行数。可以是整数,也可以是行号的列表。

    • 类型: int, list

      df = pd.read_excel('data.xlsx', skiprows=2)  # 跳过前两行
      df = pd.read_excel('data.xlsx', skiprows=[1, 3])  # 跳过第 1 和第 3 行
      

      image-20240915205321132

  9. nrows:

    • 说明: 读取指定数量的行。

    • 类型: int

      df = pd.read_excel('data.xlsx', nrows=3)  # 只读取前 10 行
      

      image-20240915205355308

  10. encoding:

    • 说明: 文件编码。默认为 None。可以指定编码格式,例如 'utf-8''latin1'

    • 类型: str

      df = pd.read_excel('data.xlsx', encoding='utf-8')
      
  11. engine:

    • 说明: 指定解析引擎。可以是 'openpyxl'(用于 .xlsx)或 'xlrd'(用于 .xls)。如果不指定,pandas 会根据文件格式自动选择引擎。

    • 类型: str

      df = pd.read_excel('data.xlsx', engine='openpyxl')  # 指定使用 openpyxl 引擎
      
2)保存excel文件(to_excel())

excel_writer:

  • 说明: 指定要保存的 Excel 文件名或路径,或者传入 pandas.ExcelWriter 对象。

  • 类型: str, path-like, ExcelWriter

    df.to_excel('output.xlsx')  # 保存为名为 output.xlsx 的文件
    

sheet_name:

  • 说明: 指定工作表的名称。可以是单个字符串(表示单个工作表),也可以是一个列表(当使用 ExcelWriter 保存多个工作表时)。

  • 类型: str, list

    df.to_excel('output.xlsx', sheet_name='Sheet1')  # 保存到名为 Sheet1 的工作表
    

na_rep:

  • 说明: 用于表示缺失数据(NaN)时的填充值。

  • 类型: str

    df.to_excel('output.xlsx', na_rep='N/A')  # 将 NaN 值表示为 'N/A'
    

columns:

  • 说明: 指定要保存的列。可以是列名的列表或 None(保存所有列)。

  • 类型: list, None

    df.to_excel('output.xlsx', columns=['col1', 'col2'])  # 只保存 'col1' 和 'col2' 列
    

header:

  • 说明: 是否写入列名。True 表示写入,False 表示不写入。

  • 类型: bool, list

    df.to_excel('output.xlsx', header=False)  # 不写入列名
    

index:

  • 说明: 是否写入行索引。True 表示写入索引,False 表示不写入索引。

  • 类型: bool

    df.to_excel('output.xlsx', index=False)  # 不写入行索引
    

index_label:

  • 说明: 用于指定行索引的标签。如果 indexTrue,可以使用此参数指定索引的名称。

  • 类型: str, list, None

    df.to_excel('output.xlsx', index_label='Index')  # 指定索引列的名称为 'Index'
    

startrow:

  • 说明: 数据写入工作表的起始行,默认值为 0。

  • 类型: int

    df.to_excel('output.xlsx', startrow=2)  # 从第 3 行开始写入数据
    

startcol:

  • 说明: 数据写入工作表的起始列,默认值为 0。

  • 类型: int

    df.to_excel('output.xlsx', startcol=2)  # 从第 3 列开始写入数据
    

engine:

  • 说明: 指定用于写入 Excel 文件的引擎。常见的引擎包括 openpyxl(默认用于 .xlsx 文件)和 xlsxwriter

  • 类型: str

    df.to_excel('output.xlsx', engine='xlsxwriter')  # 使用 xlsxwriter 引擎
    

3. JSON 文件

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 Web API 返回的数据格式。Pandas 提供了 pd.read_json() 函数来读取 JSON 文件。

# 读取 JSON 文件
df = pd.read_json('data.json')

# 查看前几行数据
print(df.head())
1)读取JSON文件(pandas.read_json())
  1. path_or_buf:

    • 说明: JSON 文件的路径或类文件对象。也可以是 JSON 数据的字符串。

    • 类型: str, PathLike, file-like object, None

      df = pd.read_json('data.json')  # 从文件读取
      df = pd.read_json('{"name": ["Alice", "Bob"], "age": [25, 30]}')  # 从字符串读取
      

      image-20240915231850488

  2. orient:

    • 说明: JSON 数据的格式。指定 JSON 数据的结构,决定如何解析 JSON 文件。常见值包括 'split', 'records', 'index', 'columns', 'values'

    • 类型: str

      • 'split'
        JSON 格式为
        { 'index': [...], 'columns': [...], 'data': [...] }
        
        df = pd.read_json('data.json', orient='split')
        
      • 'records'
        JSON 格式为记录的列表,例如
        [{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }]
        
        df = pd.read_json('data.json', orient='records')
        
      • 'index'
        JSON 格式为
        { index: { column: value } }
        
        df = pd.read_json('data.json', orient='index')
        
      • 'columns'
        JSON 格式为
        { column: { index: value } }
        
        df = pd.read_json('data.json', orient='columns')
        
      • 'values'
        JSON 格式为二维数组,例如
        [[name1, age1], [name2, age2]]
        
        df = pd.read_json('data.json', orient='values')
        
  1. 'split'
  • 说明: JSON 数据的格式为 { 'index': [...], 'columns': [...], 'data': [...] }。其中,'index' 是行索引,'columns' 是列名,'data' 是二维数据数组(每个子数组表示 DataFrame 的一行)。

  • 适用场景: 当 JSON 数据以这种结构存储时,用于读取具有明确索引和列名的 DataFrame。

    {
      "index": [0, 1],
      "columns": ["name", "age"],
      "data": [
        ["Alice", 25],
        ["Bob", 30]
      ]
    }
    
    df = pd.read_json('data.json', orient='split')
    
  1. 'records'
  • 说明: JSON 数据的格式为一个对象的列表,其中每个对象都是一个记录(即每个 JSON 对象表示 DataFrame 的一行)。适用于结构较简单的记录集合。

  • 适用场景: 当 JSON 数据以记录的列表形式存储时,例如从数据库导出的数据。

    [
      { "name": "Alice", "age": 25 },
      { "name": "Bob", "age": 30 }
    ]
    
    df = pd.read_json('data.json', orient='records')
    
  1. 'index'
  • 说明: JSON 数据的格式为 { index: { column: value } }。其中,index 是行索引,内部的对象表示每行的列值。

  • 适用场景: 当 JSON 数据以索引作为键,每个索引的值是一个包含列和值的对象时。

    {
      "0": { "name": "Alice", "age": 25 },
      "1": { "name": "Bob", "age": 30 }
    }
    
    df = pd.read_json('data.json', orient='index')
    
  1. 'columns'
  • 说明: JSON 数据的格式为 { column: { index: value } }。其中,column 是列名,每列的值是一个包含行索引和值的对象。

  • 适用场景: 当 JSON 数据以列名作为键,每个列名的值是一个包含行索引和值的对象时。

    {
      "name": {
        "0": "Alice",
        "1": "Bob"
      },
      "age": {
        "0": 25,
        "1": 30
      }
    }
    
    df = pd.read_json('data.json', orient='columns')
    
  1. 'values'
  • 说明: JSON 数据的格式为二维数组(列表的列表),每个子列表表示 DataFrame 的一行,没有行索引和列名。

  • 适用场景: 当 JSON 数据仅包含数据部分,没有明确的行索引和列名时。

    [
      ["Alice", 25],
      ["Bob", 30]
    ]
    
    df = pd.read_json('data.json', orient='values')
    

总结

  • 'split': 适合有明确索引和列名的数据。
  • 'records': 适合记录列表形式的数据。
  • 'index': 适合以索引为主的 JSON 数据。
  • 'columns': 适合以列为主的 JSON 数据。
  • 'values': 适合没有行索引和列名的数据。

选择适当的 orient 参数可以确保 JSON 数据被正确地解析成 DataFrame 格式。

  1. typ:

    • 说明: 读取 JSON 数据的类型。'frame' 表示返回 DataFrame,'series' 表示返回 Series。

    • 类型: str

      df = pd.read_json('data.json', typ='frame')  # 默认,返回 DataFrame
      
  2. dtype:

    • 说明: 数据类型转换。默认 Truepandas 会根据数据自动推断数据类型。

    • 类型: bool, dict, None

      df = pd.read_json('data.json', dtype={'age': 'int32'})  # 将 'age' 列的类型强制转换为 int32
      
  3. convert_axes:

    • 说明: 是否转换索引和列为适当的数据类型。默认为 True

    • 类型: bool

      df = pd.read_json('data.json', convert_axes=False)  # 不转换索引和列
      
  4. convert_dates:

    • 说明: 是否自动解析日期。默认为 True,即尝试将日期字符串转换为日期类型。

    • 类型: bool

      df = pd.read_json('data.json', convert_dates=False)  # 不解析日期
      
  5. keep_default_dates:

    • 说明: 是否保留默认的日期格式。默认为 True,保留默认日期格式。

    • 类型: bool

      df = pd.read_json('data.json', keep_default_dates=False)  # 不保留默认日期格式
      
  6. precise_float:

    • 说明: 是否使用精确的浮点数表示。默认为 False,可以设置为 True 以提高精度。

    • 类型: bool

      df = pd.read_json('data.json', precise_float=True)  # 使用精确浮点数
      
  7. date_unit:

    • 说明: 用于解析日期的单位,常用的值包括 'D', 's', 'ms' 等。

    • 类型: str

      df = pd.read_json('data.json', date_unit='s')  # 日期单位为秒
      
  8. encoding:

    • 说明: 文件的编码格式。常用的编码包括 'utf-8''latin1'

    • 类型: str

      df = pd.read_json('data.json', encoding='utf-8')  # 使用 UTF-8 编码
      
  9. lines:

    • 说明: 是否按行读取 JSON 文件。用于处理按行存储的 JSON 文件(每行一个 JSON 对象)。

    • 类型: bool

      df = pd.read_json('data.json', lines=True)  # 按行读取 JSON 文件
      
  10. chunksize:

    • 说明: 用于分块读取 JSON 数据的大小。返回一个迭代器,每次返回一个 DataFrame 的块。

    • 类型: int

      chunks = pd.read_json('data.json', chunksize=1000)  # 每次读取 1000 行数据
      for chunk in chunks:
          process(chunk)  # 处理每个块
      
  11. compression:

    • 说明: JSON 文件的压缩类型。常见值包括 'infer', 'bz2', 'gzip', 'xz'

    • 类型: str, None

      df = pd.read_json('data.json.gz', compression='gzip')  # 从压缩文件读取
      
2)保存JSON文件(to_json())

path_or_buf:

  • 说明: JSON 文件的路径或类文件对象。如果指定了路径,数据将保存到该路径的文件中。如果为 None,则返回 JSON 格式的字符串。

  • 类型: str, PathLike, file-like object, None

  • 示例

    :

    python复制代码df.to_json('data.json')  # 保存到文件
    json_str = df.to_json()  # 返回 JSON 字符串
    

orient:

  • 说明: JSON 数据的格式。指定保存 JSON 的结构。常见值包括 'split', 'records', 'index', 'columns', 'values'

  • 类型: str

    • 'split'

      df.to_json('data.json', orient='split')
      
    • 'records'

      df.to_json('data.json', orient='records')
      
    • 'index'

      df.to_json('data.json', orient='index')
      
    • 'columns'

      df.to_json('data.json', orient='columns')
      
    • 'values'

      df.to_json('data.json', orient='values')
      

date_format:

  • 说明: 日期格式。可以是 'epoch'(时间戳格式)或 'iso'(ISO 8601 格式)。默认为 None,即不进行日期格式化。

  • 类型: str, None

    df.to_json('data.json', date_format='iso')  # 使用 ISO 8601 日期格式
    

double_precision:

  • 说明: 双精度浮点数的精度。默认是 10 位小数。

  • 类型: int

    df.to_json('data.json', double_precision=5)  # 设置浮点数精度为 5 位小数
    

default_handler:

  • 说明: 自定义处理未序列化数据类型的函数。默认为 None

  • 类型: callable

    import numpy as np
    
    def handle_complex(obj):
        if isinstance(obj, np.complex128):
            return str(obj)
        raise TypeError(f"Type {type(obj)} not serializable")
    
    df.to_json('data.json', default_handler=handle_complex)
    

lines:

  • 说明: 是否将每个记录保存为一行 JSON 对象。适用于处理按行存储的 JSON 数据。

  • 类型: bool

    df.to_json('data.json', lines=True)  # 按行存储 JSON 对象
    

compression:

  • 说明: 压缩类型。常见值包括 'infer', 'bz2', 'gzip', 'xz'。默认为 'infer',即自动推断。

  • 类型: str, None

    df.to_json('data.json.gz', compression='gzip')  # 保存为压缩的 JSON 文件
    

encoding:

  • 说明: 文件编码格式。默认为 'utf-8'

  • 类型: str

    df.to_json('data.json', encoding='utf-8')  # 使用 UTF-8 编码
    

index:

  • 说明: 是否包含 DataFrame 的索引。默认为 True,即包含索引。

  • 类型: bool

    df.to_json('data.json', index=False)  # 不保存索引
    

4. SQL 数据库

Pandas 支持从 SQL 数据库中读取数据,这需要使用 pd.read_sql() 函数。首先,需要建立与数据库的连接,常用的库有 sqlite3(用于 SQLite 数据库)或 SQLAlchemy(支持 MySQL、PostgreSQL 等)。

在使用pandas读取sql数据时候首先要安装 SQLAlchemy。还有 mysql-connector-python(MySQL)pymysql(postgreSQL)

from sqlalchemy import create_engine

# 数据库连接信息
username = 'root'
password = '123'
host = 'localhost'  # 数据库服务器地址
port = '3306'       # MySQL 默认端口
database = 'test_01'

# 创建数据库连接字符串
connection_string = f'mysql+mysqlconnector://{username}:{password}@{host}:{port}/{database}'

# 创建 SQLAlchemy 引擎
engine = create_engine(connection_string)

1)读取SQL(pandas.read_sql())
  • sql:

    • 说明: SQL 查询或表名。如果是 SQL 查询,它将执行该查询;如果是表名,它将从指定表中读取数据。

    • 类型: str

      sql = "SELECT * FROM people"
      # 或
      sql = "people"# 表名
      s = pd.read.sql(sql=sql)
      

      image-20240915233426157

    con:

    • 说明: 数据库连接对象。可以是 SQLAlchemy 引擎、数据库连接字符串或数据库连接对象。

    • 类型: SQLAlchemy engine, sqlite3 connection, str (数据库连接字符串)

      from sqlalchemy import create_engine
      connection_string = f'mysql+mysqlconnector://{username}:{password}@{host}:{port}/{database}'
      

      image-20240915233459973

    index_col:

    • 说明: 指定 DataFrame 的索引列。如果设置为列名或列的序号,读取的数据将使用该列作为索引。

    • 类型: str, int, None

      df = pd.read_sql(sql, con, index_col='name')
      

      image-20240915233550368

    coerce_float:

    • 说明: 将非整数的浮点数据强制转换为浮点类型。默认为 True

    • 类型: bool

      df = pd.read_sql(sql, con, coerce_float=False)
      

    params:

    • 说明: SQL 查询中的参数。用于防止 SQL 注入攻击。如果 sql 是带参数的 SQL 查询,可以通过该参数传递实际值。

    • 类型: list, tuple, dict

      sql = "SELECT * FROM people WHERE department = %s"
      df = pd.read_sql(sql, con, params=('HR',))
      

      image-20240915234815676

    parse_dates:

    • 说明: 指定需要解析为日期的列。可以是列名的列表或字典。字典形式允许同时指定日期列和解析格式。

    • 类型: bool, list, dict, None

      df = pd.read_sql(sql, con, parse_dates=['hire_date'])
      

    chunksize:

    • 说明: 返回一个生成器,每次生成 chunksize 行数据。这对于处理大型数据集特别有用。

    • 类型: int, None

      chunks = pd.read_sql(sql, con, chunksize=1000)
      for chunk in chunks:
          # 处理每个数据块
      
2)保存SQL(to_sql())

name:

  • 说明: 要保存数据的目标表名。如果表名已存在,if_exists 参数决定了如何处理。

  • 类型: str

    s = pd.read_sql(sql, con=engine,params=('张三',))
    s1 = pd.DataFrame({
        'id': [4, 5, 6],
        'name': ['赵六', '钱七', '孙八'],
        'number': [999, 888, 777],
        'digital_id': [234, 567, 678],
        'person_id': [902, 903, 904]
    })
    
    s1.to_sql('people', con=engine, if_exists='append', index=False)
    

    image-20240916000332658

con:

  • 说明: 数据库连接对象。可以是 SQLAlchemy 引擎、数据库连接字符串或数据库连接对象。

  • 类型: SQLAlchemy engine, sqlite3 connection, str (数据库连接字符串)

    from sqlalchemy import create_engine
    connection_string = f'mysql+mysqlconnector://{username}:{password}@{host}:{port}/{database}'
    

schema:

  • 说明: 它用于指定表所在的数据库模式。数据库模式是一个数据库的逻辑分区,用于组织表、视图、索引等数据库对象。

  • 类型: str, None

    df.to_sql('people', con=engine, schema='public')
    

if_exists:

  • 说明: 如果目标表已经存在,指定如何处理。可以是 'fail'(默认,报错)、'replace'(删除旧表,创建新表)、'append'(追加到现有表)。

  • 类型: str

    df.to_sql('people', con=engine, if_exists='replace')
    

index:

  • 说明: 是否将 DataFrame 的索引保存为表中的列。默认为 True

  • 类型: bool

    df.to_sql('people', con=engine, index=False)
    

index_label:

  • 说明: 如果 index=True,可以指定索引列的标签名。

  • 类型: str, list, None

    df.to_sql('people', con=engine, index_label='employee_id')
    

chunksize:

  • 说明: 每次写入的行数,用于分块插入数据。适用于大数据集,可以减少内存占用。

  • 类型: int, None

    df.to_sql('people', con=engine, chunksize=1000)
    

dtype:

  • 说明: 指定列的数据类型。可以是列名与数据类型的映射字典。

  • 类型: dict, None

    from sqlalchemy.types import Integer, String
    df.to_sql('people', con=engine, dtype={'name': String(50), 'age': Integer})
    

method:

  • 说明: 数据插入的方法。可以是 None(默认),或者是特定的插入方法如 multi(使用 SQLAlchemy 的多值插入)。method='multi' 可以提高插入性能。

  • 类型: str, None

    df.to_sql('people', con=engine, method='multi')
    

总结

Pandas 提供了丰富的数据读取接口,支持常见的文件格式如 CSV、Excel、JSON、SQL,以及压缩文件和其他高效的数据存储格式。在读取数据时,根据不同的数据格式和需求,设置适当的参数能够帮助你更灵活地处理数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能学习笔记】6_自然语言处理基础

自然语言处理基本介绍 自然语言:指人类使用的在社会生活中自然形成的语言; 自然语言处理:指计算机识别、理解、计算分析、生成自然语言的过程。 包含自然语言理解和自然语言生成两部分的两大研究方向。 自然语言理解:所有支持机器理解文本内容的方法模型或任务的总称,是推…

代理IP批理检测工具,支持socks5,socks4,http和https代理批量检测是否可用

代理IP批理检测工具,支持socks5,socks4,http和https代理批量检测是否可用 工具使用c编写: 支持ipv4及ipv6代理服务器。 支持http https socks4及socks5代理的批量检测。 支持所有windows版本运行! 导入方式支持手工选择文件及拖放文件。 导入格式支持三…

常用游戏运行库下载

包含以下资源: DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接

Puppet 部署应用(Puppet deployment application)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

逻辑漏洞-其二(登录验证码安全)

2.登录验证码安全 验证码漏洞检测流程 2.1 图形验证码 无效验证 2.1.1 验证码可爆破 验证码可爆破,即验证码过于简单,例如验证码中字符数量过少,比如只有四位组成,且只包含 0-9 的数字还没有干扰点 ,亦或者 验证码可以…

Python---爬虫

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 Python爬虫是一种通过自动化程序爬取互联网上的信息的技术。爬虫可以自动访问网页并提取所需的数据,比如网站的文本、图片、视频等。Python是一种简单易学的编程语言&#xff…

建筑裂缝检测图像ai模型训练数据集

共52w例图像的建筑裂缝检测图像ai模型训练数据集 20 地上设施(公路桥梁、铁路桥梁、水坝(墙)、挡土墙)和地下 SOC 设施(公路/铁路隧道、地铁、水隧道);韩国40 个市、县、区 SOC 设施的数据&…

读构建可扩展分布式系统:方法与实践05分布式缓存

1. 分布式缓存 1.1. 缓存存在于应用程序的许多地方 1.1.1. 行应用程序的CPU具有高速多级硬件缓存,可以减少相对较慢的主内存访问 1.1.2. 数据库引擎可以利用主内存来缓存数据存储的内容,这样在许多情况下查询就可以不用访问速度相对较慢的磁盘 1.2. …

给树莓派添加 SSD1306 OLED 小屏幕

树莓派被作为一个小服务器使用的时候,通常都不需要接一台专用显示器,而是通过 ssh 远程登录。当环境中有多个设备使用远程登录的时候,就容易不记得相应设备的 IP 地址等信息;有时候只是需要了解设备的一些信息,例如 CP…

【GPU版】Windows下PyTorch入门深度学习环境安装与配置

如果电脑有NVIDIA GPU显卡,看【GPU版本】;否则,看【CPU版本】 聊聊PyTorch和Tensorflow 它们都是python的库/包 pip3是给python3使用的,由于现在用的python基本上都是3以上版本,所以pip和pip3没有区别 聊聊Anacond…

✔3290. 最高乘法得分

代码实现: 动态规划 /*从 b 中选一个长为 4 的子序列定义 dfs(i,j) 表示 从 b[0] 到 b[i] 中选出 j1 个数,去和 a[0] 到 a[j] 算一个点积的最大值考虑 b[i] 选或不选不选 dfs(i-1,j)选 dfs(i-1,j-1) a[j] * b[i]dfs(i,j) max(dfs(i-1),j), dfs(i-1,j-1…

FreeRTOS实战指南 — 2 移植 FreeRTOS 到 STM32F429

目录 1 准备裸机工程文件 2 创建FreeRTOS文件夹结构 3 修改Keil工程文件 3.1 添加工程文件 3.2 指定 FreeRTOS 头文件的路径 4 移植FreeRTOSConfig.h配置文件 4.1 移植FreeRTOSConfig.h 4.2 详解FreeRTOSConfig.h 4.3 修改FreeRTOSConfig.h 5 修改main.c 1 准备裸机工…

Java | Leetcode Java题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; class Solution {public int longestPalindrome(String s) {int[] count new int[128];int length s.length();for (int i 0; i < length; i) {char c s.charAt(i);count[c];}int ans 0;for (int v: count) {ans v / 2 * 2;if (v …

开源 AI 智能名片小程序:开启内容营销新境界

摘要&#xff1a;本文深入探讨了在当今数字化时代&#xff0c;内容营销的重要性以及如何实现让用户主动找你的最佳效果。通过引入开源 AI 智能名片小程序这一创新工具&#xff0c;阐述了其在明确目标用户群体、迎合用户需求痛点和打造风格特色方面的独特优势&#xff0c;为企业…

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025 VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) ESXi 7.0U3 标准版集成 Intel 网卡、Realtek USB 网卡 和 NVMe 驱动 请访问原文链…

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(下)

上下文Conversation Array 要让GPT记住上下文&#xff0c;实现GPT4里的连续对话功能&#xff0c;需要把以下内容存入conversation array中去。 NPC background storyuser input promptNPC anwser open AI API的JsonObject JSONObject是一种数据结构&#xff0c;可以理解为JSO…

【最佳实践】配置类封装-Async异步注解以及自定义线程池

效果是&#xff1a;能点进去看到自定义的线程池&#xff0c;代表指定自定义的线程池成功&#xff01; 自定义Async线程池 自定义线程池 import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.…

Android14音频进阶之如何集成音效(八十五)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

Parallels Desktop 20 版本功能汇总,附最新PD虚拟机下载链接

Parallels Desktop 20 for Mac 已正式发布&#xff01;作为目前 Mac 上极为好用强大的「虚拟机」软件&#xff0c;它完美支持最新的 macOS Sequoia 15 系统和 Windows 11 24H2&#xff0c;这次还引入了许多诸如 AI 等令人期待的全新功能和改进。为普通用户、开发者、设计师都带…

第十一章 【后端】商品分类管理微服务(11.2)——Lombok

11.2 Lombok 官网:https://projectlombok.org/ 较新版本的 idea 已默认安装 lombok 插件 Lombok 工具提供一系列的注解,使用这些注解可以不用定义 getter、setter、equals、constructor 等,可以消除 java 代码的臃肿,编译时它会在字节码文件中自动生成这些通用的方法,简…