在資料科學的領域中,資料框架的更新、合併與串接是資料處理的根本。Python Pandas 提供了強大的工具來執行這些操作,讓我得以靈活地操控資料,發掘資料背後的價值。

深入 update()merge()

Pandas 的 update()merge() 方法都能用於更新資料框架,但它們的運作方式和適用場景有所不同。

update() 的就地更新與左合併限制

update() 方法會直接修改現有的資料框架,這在處理大型資料集時可以節省記憶體空間。然而,update() 僅支援左合併,這限制了它的應用範圍。

import pandas as pd
import numpy as np

# 建立主資料框架和交易資料框架
master = pd.DataFrame({'ID': ['023', '088', '099', '111'],
                       'Salary': [45650, 55350, 55100, 61625]})

trans = pd.DataFrame({'ID': ['023', '088', '099', '111', '121'],
                       'Salary': [45650, 61000, 59100, 61625, 50000],
                       'Bonus': [2000, np.NaN, np.NaN, 3000, np.NaN]})

# 使用 update() 進行左合併更新
master.update(trans)
print(master)

update() 方法將 trans 資料框架中的資料更新到 master 資料框架中,比對的依據是 ‘ID’ 欄位。由於是左合併,只有 master 中存在的 ‘ID’ 才會被更新,trans 中新增的 ‘ID’ (‘121’) 並不會被加入 master

merge() 的靈活合併

merge() 方法則更為靈活,支援各種合併方式,包括左合併、右合併、內合併和外合併。

# 使用 merge() 進行外合併
merged_df = pd.merge(master, trans, on='ID', how='outer', suffixes=('_master', '_trans'))
print(merged_df)

merge() 方法以 ‘ID’ 欄位為鍵,將 mastertrans 進行外合併。how='outer' 引數確保兩個資料框架中的所有 ‘ID’ 都會出現在結果中,缺少的值則以 NaN 表示。suffixes 引數則為重疊的欄位名稱增加字尾,方便區分。

條件式更新與 loc() 索引器

loc() 索引器是 Pandas 中一個強大的工具,可以根據條件選取和更新資料框架的特定部分。

# 複製 merged_df
df = merged_df.copy()

# 使用 loc() 進行條件式更新
df.loc[df['Salary_trans'] <= 50000, 'TaxRate'] = 0.125
df.loc[df['Salary_trans'] > 50000, 'TaxRate'] = 0.175
print(df)

這段程式碼根據 ‘Salary_trans’ 欄位的值,為 ‘TaxRate’ 欄位指定。薪資小於等於 50000 的,稅率為 0.125;薪資大於 50000 的,稅率為 0.175。

資料串接:Pandas 與 SAS 的比較

Pandas 的 concat() 方法與 SAS 的 SET 陳述式功能相似,都能將多個資料集或資料框架串接在一起。

# 建立三個資料框架
loc1 = pd.DataFrame({'Onhand': [21, 79, 33, 81], 'Price': [17.99, 9.99, 21.00, 0.99]}, index=['A0', 'A1', 'A2', 'A3'])
loc2 = pd.DataFrame({'Onhand': [12, 33, 233, 45], 'Price': [21.99, 18.00, 0.19, 23.99]}, index=['A4', 'A5', 'A6', 'A7'])
loc3 = pd.DataFrame({'Onhand': [37, 50, 13, 88], 'Price': [9.99, 5.00, 22.19, 3.99]}, index=['A8', 'A9', 'A10', 'A11'])

# 使用 concat() 串接資料框架
all_data = pd.concat([loc1, loc2, loc3])
print(all_data)

concat() 方法將 loc1loc2loc3 三個資料框架垂直串接成一個新的資料框架 all_data

  graph LR
    A[資料框架] --> B{操作}
    B -- 更新 --> C[update()/merge()]
    B -- 合併 --> D[merge()]
    B -- 串接 --> E[concat()]

此圖表簡潔地展示了 Pandas 中資料框架的操作流程,包含更新、合併和串接。

Pandas 和 SAS 在資料串接方面各有優勢。SAS 的 PROC APPEND 在處理大型資料集時效率更高,而 Pandas 的 concat() 則更靈活,能處理不同索引的資料框架。

透過熟練運用 update()merge()concat()loc() 等方法,我們可以有效地管理和操作資料框架,從而更好地進行資料分析和探索。

選擇合適的工具和方法,能讓資料處理事半功倍。我個人的經驗是,loc() 索引器在條件式更新方面非常高效,而 merge() 方法的靈活性則讓我能應對各種複雜的資料合併場景。

深入理解這些工具的特性和使用方法,是成為資料處理高手的關鍵。

import pandas as pd
import numpy as np

# 使用 圖表展示資料串接流程
```mermaid
graph LR
    A[讀取 CSV 檔案 1] --> D[合併檔案];
    B[讀取 CSV 檔案 2] --> D;
    C[讀取 CSV 檔案 3] --> D;
    D --> E[最終 DataFrame];

在資料科學的領域中,資料處理往往扮演著至關重要的角色。Pandas 作為 Python 的一個強大資料處理工具,提供了豐富的函式來處理各種資料操作任務。本文將以玄貓的角度,探討 Pandas 中幾個重要的資料處理技巧,包含排序、去重複以及抽樣,並搭配 SAS 的程式碼做對比,讓讀者更能體會兩者之間的異同。

資料排序的藝術

排序是資料處理中一個基本與常用的操作。Pandas 的 sort_values 函式提供了靈活的排序方式,可以根據單個或多個欄位進行排序。以下是一個簡單的例子:

import pandas as pd
import numpy as np

data = {'ID': ['A0', 'A1', 'A2', 'A3', 'A4', '5A', '5B'],
        'Age': [21, 79, 33, 81, np.nan, 33, 33],
        'Rank': [1, 2, 3, 3, 4, 5, 6]}
df = pd.DataFrame(data)

df_sorted = df.sort_values(by=['Age', 'Rank'], na_position='first')
print(df_sorted)

這段程式碼建立了一個 DataFrame,並使用 sort_values 函式根據 ‘Age’ 和 ‘Rank’ 欄位進行排序。na_position='first' 引數指定了將缺失值放在排序結果的開頭。

對應的 SAS 程式碼如下:

proc sort data=df;
    by age rank;
run;

SAS 使用 PROC SORT 程式進行排序,BY 陳述式指定排序依據的欄位。

去重複資料的技巧

在資料清洗的過程中,去除重複資料是一個重要的步驟。Pandas 提供了 drop_duplicates 函式來實作這個功能。

df_deduped = df.drop_duplicates(subset=['Age'], keep='first')
print(df_deduped)

drop_duplicates 函式可以根據指定的欄位去除重複值。keep='first' 引數表示保留第一次出現的值。

在 SAS 中,可以使用 PROC SORTNODUPKEY 選項來去除重複值。

proc sort data=df nodupkey out=df_deduped;
    by age;
run;

NODUPKEY 選項會去除根據 BY 陳述式指定的欄位排序後,重複出現的觀察值。

資料抽樣的策略

資料抽樣在資料分析中也扮演著重要的角色。Pandas 的 sample 函式提供了多種抽樣方法。

df_sampled = df.sample(n=3, random_state=123)
print(df_sampled)

sample 函式可以從 DataFrame 中隨機抽取指定數量的樣本。random_state 引數可以確保抽樣結果的可重複性。

在 SAS 中,可以使用 PROC SURVEYSELECT 程式進行資料抽樣。

proc surveyselect data=df out=df_sampled method=srs n=3;
run;

PROC SURVEYSELECT 提供了多種抽樣方法,METHOD=SRS 指定使用簡單隨機抽樣。

本文介紹了 Pandas 中排序、去重複和抽樣等重要的資料處理技巧,並且 SAS 程式碼進行了比較。Pandas 提供了簡潔與功能強大的函式,讓資料處理更加便捷。讀者可以根據自身需求和技術背景選擇合適的工具。

  graph LR
    A[資料處理技巧] --> B(排序)
    A --> C(去重複)
    A --> D(抽樣)
import glob
import pandas as pd
import os

# 取得目前工作目錄
current_dir = os.getcwd()
print("目前工作目錄:", current_dir)

# 設定資料檔案所在目錄的相對路徑
data_dir = "data"  # 假設資料檔案在名為 "data" 的子目錄中

# 切換到資料檔案所在目錄
os.chdir(data_dir)

# 使用相對路徑讀取檔案
input_files = glob.glob('*_2*.xlsx')
print("找到的檔案:", input_files)

# 建立空的 DataFrame
final_df = pd.DataFrame()

# 迴圈讀取每個檔案並合併到 final_df
for file in input_files:
    df = pd.read_excel(file, converters={'ID': str}).set_index("ID")
    final_df = pd.concat([final_df, df], ignore_index=False, sort=False)

# 切換回原本的工作目錄
os.chdir(current_dir)

print(final_df)

這段程式碼首先使用 os.getcwd() 取得目前的工作目錄,並使用 os.chdir() 切換到資料檔案所在的子目錄 data。然後,使用 glob.glob('*_2*.xlsx') 搜尋符合模式的檔案,由於已經切換到資料目錄,因此可以使用相對路徑。讀取和合併檔案的邏輯與前一段程式碼相同。最後,使用 os.chdir(current_dir) 切換回原本的工作目錄,確保程式在正確的目錄下繼續執行後續操作。

  graph LR
    B[B]
    D[D]
    F[F]
A[取得目前工作目錄] --> B{切換到資料目錄}
B --> C[使用 glob 搜尋檔案]
C --> D{迴圈讀取檔案}
D --> E[合併 DataFrame]
E --> F{切換回原工作目錄}

圖表説明: 此流程圖展示了使用相對路徑讀取和合併多個 Excel 檔案的步驟。

這個方法可以更彈性地管理檔案路徑,尤其是在專案中需要在不同目錄之間切換時。同時,使用相對路徑也讓程式碼更具可移植性,方便在不同的環境中執行。

  graph LR
    C[C]
    E[E]
A[多個 Excel 檔案] --> B(glob)
B --> C{檔案列表}
C --> D(pandas)
D --> E{合併後的 DataFrame}

圖表説明: 此圖表簡潔地展示了使用 globpandas 合併多個 Excel 檔案的過程。

透過 glob 模組和相對路徑的運用,我們可以更有效率地處理分散在多個檔案中的資料,簡化資料整合的流程。這是我在實際專案中經常使用的技巧,希望能幫助大家提升資料處理效率。

import os
import glob

# 取得目前工作目錄
wd = os.getcwd()
print(wd)


# 切換工作目錄
os.chdir('C:\\data')  # 假設 C:\data 存在

# 取得目前工作目錄
wd = os.getcwd()
print(wd)



# 使用相對路徑取得 .csv 檔案列表
csv_files = glob.glob('*.csv')  # 此處僅為示範,實際上 C:\data 可能沒有 .csv 檔案
print(csv_files)

這段程式碼示範瞭如何使用 osglob 模組操作檔案系統。os.getcwd() 函式會回傳目前的程式工作目錄。os.chdir() 函式則用於切換工作目錄。glob.glob('*.csv') 使用相對路徑搜尋目前工作目錄下所有副檔名為 .csv 的檔案,並將結果以列表形式回傳。

使用 SAS 合併多個 CSV 檔案

以下 SAS 程式碼示範如何合併多個 .csv 檔案:

filename tmp pipe "dir 'c:\data\*_2*.csv' /s/b"; /* 使用單引號避免路徑中的空格問題 */

data _null_;
  infile tmp;
  length file_name $256; /* 增加檔案名稱長度限制 */
  input file_name $char256.; /* 指定輸入格式為 char */

  length imported $500;
  retain imported ' ';

  imported = catx(' ', imported, cats('temp', put(_n_, best.)));
  call symputx('imported', strip(imported)); /* 使用 symputx 避免變數名稱長度問題 */

  call execute(cats('proc import datafile="',
    strip(file_name),
    '" out=temp',
    strip(put(_n_, best.)),
    ' dbms=csv replace; run;')); /* 使用 cats 連結字串更有效率 */
run;

data final;
  set &imported;
  format amount dollar8.2; /* 格式化金額欄位 */
run;

/* 使用 PROC EXPORT 輸出合併後的資料 */
proc export data=final outfile="c:\data\final_merged.csv" dbms=csv replace;
run;

這段 SAS 程式碼使用 FILENAME PIPE 陳述式執行作業系統指令,利用 dir 指令取得所有符合 c:\data\*_2*.csv 模式檔案的完整路徑。_NULL_ data 步驟讀取檔案列表,並使用 CALL EXECUTE 執行 PROC IMPORT,將每個 .csv 檔案匯入到臨時資料集 temp1temp2 等。最後,final data 步驟將所有臨時資料集合併成最終的 final 資料集,並使用 PROC EXPORT 將合併後的資料輸出到 final_merged.csv 檔案。程式碼中加入了一些改進,例如使用單引號避免路徑中的空格問題,增加檔案名稱長度限制,使用 symputx 避免變數名稱長度問題,以及使用 cats 函式更有效率地連結字串。

import pandas as pd

# 假設 final_df 已經存在,與包含從 SAS 匯出的資料
# final_df = pd.read_csv('C:\\data\\final_merged.csv')

# 將 DataFrame 輸出到 CSV 檔案
# final_df.to_csv('C:\\data\\final.csv', index=False) # 移除索引,避免產生額外的索引欄位

# 建立一個示例 DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
final_df = pd.DataFrame(data)

final_df.to_csv('C:\\data\\final.csv', index=False)

這段程式碼使用 Pandas 的 to_csv() 方法將 DataFrame final_df 輸出到 C:\\data\\final.csv 檔案。index=False 引數用於避免在輸出檔案中包含 DataFrame 的索引。

/* 使用 PROC EXPORT 將 SAS 資料集輸出到 CSV 檔案 */
libname mylib "c:\data"; /* 定義 libref 指向輸出目錄 */

proc export data=final outfile=mylib.final_ds dbms=csv replace;
run;

這段 SAS 程式碼使用 PROC EXPORTfinal 資料集輸出到 c:\data\final_ds.csv 檔案。dbms=csv 指定輸出格式為 CSV,replace 選項表示覆寫已存在的檔案。 使用 libref 可以簡化程式碼,並避免重複輸入路徑。

  graph LR
    A[Pandas DataFrame] --> B(to_csv)
    B --> C[CSV File]
    D[SAS Dataset] --> E(PROC EXPORT)
    E --> F[CSV File]

圖表説明:此流程圖展示了 Pandas 和 SAS 輸出資料到 CSV 的流程。

import pandas as pd

# 假設 final_df 已經存在
# 建立一個示例 DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
final_df = pd.DataFrame(data)

# 將 DataFrame 輸出到 Excel 檔案
final_df.to_excel('C:\\data\\final.xlsx', sheet_name='Sheet1', index=False) # 移除索引

# 多個 DataFrame 輸出到同一個 Excel 檔案的不同工作表
with pd.ExcelWriter('C:\\data\\multiple_sheets.xlsx') as writer:
    final_df.to_excel(writer, sheet_name='Sheet1', index=False)
    final_df.to_excel(writer, sheet_name='Sheet2', index=False)

這段程式碼示範瞭如何使用 Pandas 將 DataFrame 輸出到 Excel 檔案。第一部分示範瞭如何將單個 DataFrame 輸出到單個工作表,index=False 引數避免了輸出索引。第二部分示範瞭如何使用 ExcelWriter 將多個 DataFrame 輸出到同一個 Excel 檔案的不同工作表。

/* 使用 ODS EXCEL 將 SAS 資料集輸出到 Excel 檔案 */
ods excel file="c:\data\sas_final.xlsx" style=statistical options(sheet_name="Sheet1");

proc print data=final;
run;

ods excel close;

/* 多個 SAS 資料集輸出到同一個 Excel 檔案的不同工作表 */
ods excel file="c:\data\sas_multiple_sheets.xlsx" style=statistical;

ods excel options(sheet_name="Sheet1");
proc print data=final;
run;

ods excel options(sheet_name="Sheet2");
proc print data=final;
run;

ods excel close;

這段程式碼示範瞭如何使用 SAS 將資料集輸出到 Excel 檔案。第一部分使用 ODS EXCELfinal 資料集輸出到 sas_final.xlsx 檔案的 “Sheet1” 工作表。第二部分示範瞭如何將多個資料集輸出到同一個 Excel 檔案的不同工作表,透過設定 sheet_name 選項來指定工作表名稱。

  graph LR
    A[Pandas DataFrame] --> B(to_excel)
    B --> C[Excel File]
    D[SAS Dataset] --> E(ODS EXCEL)
    E --> F[Excel File]

圖表説明: 此流程圖展示了 Pandas 和 SAS 輸出資料到 Excel 的流程。

在資料科學的領域中,資料交換和格式轉換是不可或缺的環節。我經常需要在 Python 的 Pandas 和 SAS 之間轉換資料,同時也需要處理 Excel 和 JSON 格式。這篇文章分享了我在這些任務中的一些心得和技巧,希望能幫助你提升資料處理的效率。

以下提供 SQLAlchemy 連線到資料函式庫的程式碼和説明:

import sqlalchemy
import pyodbc
from sqlalchemy import create_engine

# 替換為你的伺服器名稱、資料函式庫名稱和表格名稱
server_name = "你的伺服器名稱"
database_name = "你的資料函式庫名稱"
table_name = "你的表格名稱"

# 建立資料函式庫連線字串
connection_string = f"mssql+pyodbc://{server_name}/{database_name}?driver=ODBC+Driver+17+for+SQL+Server"  # 使用 ODBC Driver 17 for SQL Server

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

# 測試連線
try:
    connection = engine.connect()
    print("資料函式庫連線成功!")
    connection.close()
except Exception as e:
    print(f"資料函式庫連線失敗:{e}")


# 使用 SQLAlchemy 讀取資料
try:
    df = pd.read_sql_table(table_name, engine)
    print(df.head())
except Exception as e:
    print(f"讀取資料表失敗:{e}")

這段程式碼示範瞭如何使用 SQLAlchemy 連線到 Microsoft SQL Server 資料函式庫,並讀取資料表。

  1. 匯入必要的函式庫: 匯入 sqlalchemypyodbcpandas
  2. 設定連線引數:server_namedatabase_nametable_name 替換為你的資料函式庫資訊。
  3. 建立連線字串: 使用 f-string 建立連線字串,指定資料函式庫型別 (mssql+pyodbc)、伺服器、資料函式庫名稱和驅動程式。請確保使用正確的 ODBC 驅動程式版本。
  4. 建立 SQLAlchemy 引擎: 使用 create_engine() 函式建立引擎物件,用於管理資料函式庫連線。
  5. 測試連線: 使用 engine.connect() 測試連線是否成功。
  6. 使用 SQLAlchemy 讀取資料: 使用 pd.read_sql_table() 函式讀取資料表資料到 Pandas DataFrame。

使用 SQLAlchemy 讀取資料函式庫表格

  graph LR
    B[B]
    C[C]
    A[設定連線引數] --> B{建立 SQLAlchemy 引擎};
    B --> C{連線到資料函式庫};
    C -- 成功 --> D[讀取資料表];
    C -- 失敗 --> E[顯示錯誤訊息];
    D --> F[Pandas DataFrame];

這個流程圖展示了使用 SQLAlchemy 讀取資料函式庫表格的步驟。首先設定連線引數,然後建立 SQLAlchemy 引擎並連線到資料函式庫。如果連線成功,則讀取資料表資料到 Pandas DataFrame;如果連線失敗,則顯示錯誤訊息。

請注意,你需要安裝 pyodbc 函式庫:pip install pyodbc。 並且確保你的 ODBC 驅動程式已正確安裝和設定。

這個更完整的版本包含了錯誤處理和更詳細的説明,應該能更好地幫助你理解如何使用 SQLAlchemy 讀取關聯式資料函式庫表格。

import pandas as pd
from sqlalchemy import create_engine

# 建立資料函式庫連線
engine = create_engine('mssql+pyodbc://USER:PW@SERVER/你的資料函式庫名稱?driver=ODBC+Driver+13+for+SQL+Server')


def 讀取資料函式庫表格(表格名稱, 引擎, 欄位名稱=None, 索引欄位=None):
    """
    從資料函式庫表格讀取資料到 Pandas DataFrame。

    Args:
        表格名稱 (str): 資料函式庫表格名稱。
        引擎 (sqlalchemy.engine.Engine): SQLAlchemy 引擎物件。
        欄位名稱 (list, optional): 要讀取的欄位名稱列表。 Defaults to None.
        索引欄位 (str, optional): 設定為索引的欄位名稱。 Defaults to None.

    Returns:
        pandas.DataFrame: 包含表格資料的 DataFrame。
    """
    return pd.read_sql_table(表格名稱, 引擎, columns=欄位名稱, index_col=索引欄位)


# 讀取整個表格
客戶資料 = 讀取資料函式庫表格('DimCustomer', engine)
print(客戶資料.info())

# 讀取指定欄位並設定索引
指定欄位 = ['FirstName', 'LastName', 'BirthDate', 'Gender', 'YearlyIncome', 'CustomerKey']
客戶資料_索引 = 讀取資料函式庫表格('DimCustomer', engine, 欄位名稱=指定欄位, 索引欄位='CustomerKey')
print(客戶資料_索引[['FirstName', 'LastName', 'BirthDate']].head(5))
print(客戶資料_索引.index)


def 執行_SQL_查詢(查詢陳述式, 引擎):
    """
    執行 SQL 查詢並將結果儲存到 DataFrame。

    Args:
        查詢陳述式 (str): SQL 查詢陳述式。
        引擎 (sqlalchemy.engine.Engine): SQLAlchemy 引擎物件。

    Returns:
        pandas.DataFrame: 查詢結果的 DataFrame。
    """
    return pd.read_sql_query(查詢陳述式, 引擎)


# 執行 SQL 查詢
高收入客戶 = 執行_SQL_查詢('SELECT FirstName, LastName, Gender, BirthDate, YearlyIncome FROM dbo.DimCustomer WHERE YearlyIncome > 50000;', engine)
print(高收入客戶[['FirstName', 'LastName', 'BirthDate']].tail(5))


def 執行_非查詢_SQL(陳述式, 引擎):
    """
    執行非查詢 SQL 陳述式,例如 CREATE TABLE、DROP、INSERT。

    Args:
        陳述式 (str): SQL 陳述式。
        引擎 (sqlalchemy.engine.Engine): SQLAlchemy 引擎物件。
    """
    from pandas.io import sql
    sql.execute(陳述式, 引擎)


# 執行非查詢 SQL 陳述式
執行_非查詢_SQL('USE AdventureWorksDW2017;', engine)
執行_非查詢_SQL('DROP TABLE IF EXISTS CustomerPy', engine)  # 使用 IF EXISTS 避免錯誤
執行_非查詢_SQL("CREATE TABLE CustomerPy (ID int, Name nvarchar(255), StartDate date);", engine)


def 寫入資料函式庫表格(dataframe, 表格名稱, 引擎, 覆寫=True, 區塊大小=1000, 寫入索引=False):
    """
    將 Pandas DataFrame 寫入資料函式庫表格。

    Args:
        dataframe (pandas.DataFrame): 要寫入的 DataFrame。
        表格名稱 (str): 資料函式庫表格名稱。
        引擎 (sqlalchemy.engine.Engine): SQLAlchemy 引擎物件。
        覆寫 (bool, optional): 是否覆寫現有表格。 Defaults to True.
        區塊大小 (int, optional): 分批寫入的區塊大小。 Defaults to 1000.
        寫入索引 (bool, optional): 是否寫入索引。 Defaults to False.
    """
    dataframe.to_sql(表格名稱, engine, if_exists='replace' if 覆寫 else 'append', chunksize=區塊大小, index=寫入索引)


# 將 DataFrame 寫入資料函式庫
寫入資料函式庫表格(高收入客戶, '高收入客戶', engine)
  graph LR
    C[C]
    D[D]
    G[G]
    H[H]
    I[I]
    L[L]
    M[M]
    O[O]
    subgraph Python - Pandas
        A[讀取資料] --> B(read_sql_table)
        B --> C{欄位選擇}
        B --> D{索引設定}
        A --> E(read_sql_query)
        A --> F(to_sql)
        F --> G{區塊大小}
        F --> H{覆寫選項}
        F --> I{索引寫入}
    end
    subgraph SAS
        J[資料處理] --> K(PROC SQL)
        K --> L{Informats}
        K --> M{Formats}
        J --> N(Data Step)
        N --> O{INPUT function}
    end

這段程式碼示範瞭如何使用 Python 和 SQLAlchemy 與 SQL Server 資料函式庫互動,包含讀取資料、執行 SQL 查詢、建立表格以及寫入資料等操作。程式碼中定義了幾個函式,將常用的資料函式庫操作封裝起來,提高程式碼的可讀性和重用性。讀取資料函式庫表格 函式可以讀取整個表格或指定欄位,並設定索引。執行_SQL_查詢 函式可以執行自定義 SQL 查詢。執行_非查詢_SQL 函式可以執行非查詢 SQL 陳述式。寫入資料函式庫表格 函式可以將 DataFrame 寫入資料函式庫,並提供了一些引數來控制寫入行為,例如 覆寫區塊大小寫入索引。圖表則展示了 Python Pandas 和 SAS 讀取和處理 SQL Server 資料的不同方法和相關函式。

透過這些技巧,可以更有效率地操作 SQL Server 資料函式庫,並且 Pandas DataFrame 整合,方便進行資料分析和處理。此外,使用 SQLAlchemy 建立資料函式庫連線,可以讓程式碼更容易適應不同的資料函式庫系統。

值得注意的是,在實際應用中,應根據資料函式庫伺服器的效能和網路狀況調整 chunksize 的值,以達到最佳效能。同時,也應注意資料函式庫連線的管理,避免資源洩漏。