พล็อตกับหมีแพนด้าและกระดุมข้อมือ
Pandas เป็นไลบรารียอดนิยมใน Python สำหรับการวิเคราะห์ข้อมูล นอกจากนี้ยังมีการสนับสนุนฟังก์ชันการลงจุดของตัวเอง อย่างไรก็ตามแผนการของ Pandas ไม่ได้ให้การโต้ตอบในการแสดงภาพ โชคดีที่สามารถสร้างพล็อตเชิงโต้ตอบและไดนามิกของพล็อตได้โดยใช้Pandas dataframe วัตถุ
เราเริ่มต้นด้วยการสร้าง Dataframe จากรายการวัตถุอย่างง่าย
data = [['Ravi',21,67],['Kiran',24,61],['Anita',18,46],['Smita',20,78],['Sunil',17,90]]
df = pd.DataFrame(data,columns = ['name','age','marks'],dtype = float)
คอลัมน์ dataframe ใช้เป็นค่าข้อมูลสำหรับ x และ yคุณสมบัติของการติดตามวัตถุกราฟ ที่นี่เราจะสร้างการติดตามแถบโดยใช้name และ marks คอลัมน์
trace = go.Bar(x = df.name, y = df.marks)
fig = go.Figure(data = [trace])
iplot(fig)
พล็อตแท่งธรรมดาจะแสดงในสมุดบันทึก Jupyter ดังต่อไปนี้ -
Plotly ถูกสร้างขึ้นด้านบนของ d3.js และเป็นไลบรารีการสร้างแผนภูมิที่สามารถใช้ได้โดยตรงกับ Pandas dataframes โดยใช้ไลบรารีอื่นที่ชื่อ Cufflinks.
หากยังไม่มีให้ติดตั้งแพ็คเกจกระดุมข้อมือโดยใช้ตัวจัดการแพ็คเกจที่คุณชื่นชอบเช่น pip ตามที่ระบุด้านล่าง -
pip install cufflinks
or
conda install -c conda-forge cufflinks-py
ขั้นแรกให้นำเข้ากระดุมข้อมือพร้อมกับไลบรารีอื่น ๆ เช่น Pandas และ numpy ซึ่งสามารถกำหนดค่าสำหรับการใช้งานออฟไลน์
import cufflinks as cf
cf.go_offline()
ตอนนี้คุณสามารถใช้ไฟล์ Pandas dataframe เพื่อแสดงพล็อตประเภทต่างๆโดยไม่ต้องใช้วัตถุติดตามและร่างจาก graph_objs module อย่างที่เราเคยทำมาก่อนหน้านี้
df.iplot(kind = 'bar', x = 'name', y = 'marks')
พล็อตบาร์ซึ่งคล้ายกับก่อนหน้านี้มากจะแสดงตามที่ระบุด้านล่าง -
Pandas dataframes จากฐานข้อมูล
แทนที่จะใช้รายการ Python ในการสร้างดาต้าเฟรมสามารถเติมข้อมูลโดยใช้ฐานข้อมูลประเภทต่างๆ ตัวอย่างเช่นข้อมูลจากไฟล์ CSV ตารางฐานข้อมูล SQLite หรือตารางฐานข้อมูล mysql สามารถดึงลงในดาต้าเฟรมของ Pandas ซึ่งในที่สุดก็จะอยู่ภายใต้กราฟพล็อตโดยใช้Figure object หรือ Cufflinks interface.
เพื่อดึงข้อมูลจาก CSV file, เราสามารถใช้ read_csv() ฟังก์ชั่นจากห้องสมุด Pandas
import pandas as pd
df = pd.read_csv('sample-data.csv')
หากมีข้อมูลใน SQLite database tableสามารถเรียกดูได้โดยใช้ SQLAlchemy library ดังต่อไปนี้ -
import pandas as pd
from sqlalchemy import create_engine
disk_engine = create_engine('sqlite:///mydb.db')
df = pd.read_sql_query('SELECT name,age,marks', disk_engine)
ในทางกลับกันข้อมูลจาก MySQL database ถูกดึงมาในดาต้าเฟรมของ Pandas ดังนี้ -
import pymysql
import pandas as pd
conn = pymysql.connect(host = "localhost", user = "root", passwd = "xxxx", db = "mydb")
cursor = conn.cursor()
cursor.execute('select name,age,marks')
rows = cursor.fetchall()
df = pd.DataFrame( [[ij for ij in i] for i in rows] )
df.rename(columns = {0: 'Name', 1: 'age', 2: 'marks'}, inplace = True)