แนะนำตัว
ในการตั้งค่าธุรกิจขององค์กรในโลกแห่งความเป็นจริง ข้อมูลส่วนใหญ่อาจไม่ถูกเก็บไว้ในไฟล์ข้อความหรือ Excel ฐานข้อมูลเชิงสัมพันธ์ที่ใช้ SQL เช่น Oracle, SQL Server, PostgreSQL และ MySQL มีการใช้งานกันอย่างแพร่หลาย และฐานข้อมูลทางเลือกจำนวนมากได้รับความนิยมอย่างมาก
ทางเลือกของฐานข้อมูลมักจะขึ้นอยู่กับประสิทธิภาพ ความสมบูรณ์ของข้อมูล และความต้องการในการขยายขนาดของแอปพลิเคชัน
ทำอย่างไร..
ในตัวอย่างนี้ เราจะสร้างฐานข้อมูล sqlite3 อย่างไร sqllite ได้รับการติดตั้งตามค่าเริ่มต้นด้วยการติดตั้ง python และไม่ต้องการการติดตั้งเพิ่มเติมใดๆ หากคุณไม่แน่ใจโปรดลองด้านล่าง เราจะนำเข้าหมีแพนด้าด้วย
การโหลดข้อมูลจาก SQL ลงใน DataFrame ค่อนข้างตรงไปตรงมา และแพนด้ามีฟังก์ชันบางอย่างที่ช่วยลดความซับซ้อนของกระบวนการ
import sqlite3 import pandas as pd print(f"Output \n {sqlite3.version}")
ผลลัพธ์
2.6.0
ผลลัพธ์
# connection object conn = sqlite3.connect("example.db") # customers data customers = pd.DataFrame({ "customerID" : ["a1", "b1", "c1", "d1"] , "firstName" : ["Person1", "Person2", "Person3", "Person4"] , "state" : ["VIC", "NSW", "QLD", "WA"] }) print(f"Output \n *** Customers info -\n {customers}")
ผลลัพธ์
*** Customers info - customerID firstName state 0 a1 Person1 VIC 1 b1 Person2 NSW 2 c1 Person3 QLD 3 d1 Person4 WA
# orders data orders = pd.DataFrame({ "customerID" : ["a1", "a1", "a1", "d1", "c1", "c1"] , "productName" : ["road bike", "mountain bike", "helmet", "gloves", "road bike", "glasses"] }) print(f"Output \n *** orders info -\n {orders}")
ผลลัพธ์
*** orders info - customerID productName 0 a1 road bike 1 a1 mountain bike 2 a1 helmet 3 d1 gloves 4 c1 road bike 5 c1 glasses
# write to the db customers.to_sql("customers", con=conn, if_exists="replace", index=False) orders.to_sql("orders", conn, if_exists="replace", index=False)
ผลลัพธ์
# frame an sql to fetch the data. q = """ select orders.customerID, customers.firstName, count(*) as productQuantity from orders left join customers on orders.customerID = customers.customerID group by customers.firstName; """
ผลลัพธ์
# run the sql. pd.read_sql_query(q, con=conn)
ตัวอย่าง
7.นำทุกอย่างมารวมกัน
import sqlite3 import pandas as pd print(f"Output \n {sqlite3.version}") # connection object conn = sqlite3.connect("example.db") # customers data customers = pd.DataFrame({ "customerID" : ["a1", "b1", "c1", "d1"] , "firstName" : ["Person1", "Person2", "Person3", "Person4"] , "state" : ["VIC", "NSW", "QLD", "WA"] }) print(f"*** Customers info -\n {customers}") # orders data orders = pd.DataFrame({ "customerID" : ["a1", "a1", "a1", "d1", "c1", "c1"] , "productName" : ["road bike", "mountain bike", "helmet", "gloves", "road bike", "glasses"] }) print(f"*** orders info -\n {orders}") # write to the db customers.to_sql("customers", con=conn, if_exists="replace", index=False) orders.to_sql("orders", conn, if_exists="replace", index=False) # frame an sql to fetch the data. q = """ select orders.customerID, customers.firstName, count(*) as productQuantity from orders left join customers on orders.customerID = customers.customerID group by customers.firstName; """ # run the sql. pd.read_sql_query(q, con=conn)
ผลลัพธ์
2.6.0 *** Customers info - customerID firstName state 0 a1 Person1 VIC 1 b1 Person2 NSW 2 c1 Person3 QLD 3 d1 Person4 WA *** orders info - customerID productName 0 a1 road bike 1 a1 mountain bike 2 a1 helmet 3 d1 gloves 4 c1 road bike 5 c1 glasses customerID firstName productQuantity ____________________________________ 0 a1 Person1 3 1 c1 Person3 2 2 d1 Person4 1