Python บทช่วยสอนแพนด้า: DataFrame, ช่วงวันที่, การใช้แพนด้า
แพนด้าคืออะไร Python?
นุ่น เป็นไลบรารีโอเพ่นซอร์สที่ให้คุณจัดการและวิเคราะห์ข้อมูลได้ Python- หมีแพนด้า Python ไลบรารีนี้ให้บริการจัดการข้อมูลและการดำเนินการข้อมูลสำหรับตารางตัวเลขและอนุกรมเวลา Pandas มอบวิธีง่ายๆ ในการสร้าง จัดการ และจัดการข้อมูล ไลบรารีนี้สร้างขึ้นบน NumPy ซึ่งหมายความว่าจำเป็นต้องใช้ NumPy เพื่อดำเนินการ
ทำไมต้องใช้แพนด้า?
นักวิทยาศาสตร์ข้อมูลใช้ประโยชน์จากแพนด้าใน Python เพื่อข้อดีดังต่อไปนี้:
- จัดการข้อมูลที่ขาดหายไปได้อย่างง่ายดาย
- มันใช้ ซีรี่ส์สำหรับโครงสร้างข้อมูลหนึ่งมิติ และ DataFrame สำหรับโครงสร้างข้อมูลหลายมิติ
- เป็นวิธีที่มีประสิทธิภาพในการแบ่งส่วนข้อมูล
- โดยให้วิธีที่ยืดหยุ่นในการผสาน เชื่อมต่อ หรือจัดรูปแบบข้อมูลใหม่
- มันมีเครื่องมืออนุกรมเวลาที่ทรงพลังในการทำงานด้วย
โดยสรุป Pandas เป็นห้องสมุดที่มีประโยชน์ การวิเคราะห์ข้อมูลสามารถใช้เพื่อจัดการและวิเคราะห์ข้อมูลได้ Pandas มอบโครงสร้างข้อมูลที่ทรงพลังและใช้งานง่าย รวมถึงวิธีการดำเนินการกับโครงสร้างเหล่านี้ได้อย่างรวดเร็ว
จะติดตั้งแพนด้าได้อย่างไร?
ตอนนี้อยู่ในนี้ Python บทช่วยสอนของ Pandas เราจะเรียนรู้วิธีการติดตั้ง Pandas Python.
หากต้องการติดตั้งไลบรารี Pandas โปรดดูบทช่วยสอนของเรา วิธีการติดตั้ง TensorFlow.mq4?- Pandas ได้รับการติดตั้งตามค่าเริ่มต้น ในกรณีระยะไกล ไม่ได้ติดตั้งแพนด้า-
คุณสามารถติดตั้ง Pandas โดยใช้:
- อนาคอนดา: conda ติดตั้ง -c อนาคอนดาแพนด้า
- In Jupyter สมุดบันทึก :
import sys
!conda install --yes --prefix {sys.prefix} pandas
Pandas DataFrame คืออะไร
แพนด้าดาต้าเฟรม เป็นอาร์เรย์สองมิติที่มีโครงสร้างข้อมูลที่มีป้ายกำกับซึ่งมีประเภทคอลัมน์ต่างกัน DataFrame เป็นวิธีมาตรฐานในการจัดเก็บข้อมูลในรูปแบบตาราง โดยมีแถวสำหรับจัดเก็บข้อมูลและคอลัมน์สำหรับตั้งชื่อข้อมูล ตัวอย่างเช่น ราคาอาจเป็นชื่อของคอลัมน์ และ 2,3,4 อาจเป็นค่าราคา
Data Frame เป็นที่รู้จักกันดีในหมู่นักสถิติและผู้ปฏิบัติงานด้านข้อมูลอื่นๆ
ด้านล่างรูปภาพของกรอบข้อมูล Pandas:
ซีรีส์คืออะไร?
ซีรีส์คือโครงสร้างข้อมูลหนึ่งมิติ สามารถมีโครงสร้างข้อมูลใดๆ เช่น จำนวนเต็ม ทศนิยม และสตริง ซึ่งจะมีประโยชน์เมื่อคุณต้องการคำนวณหรือส่งคืนอาร์เรย์หนึ่งมิติ ตามคำจำกัดความแล้ว ชุดข้อมูลไม่สามารถมีหลายคอลัมน์ได้ สำหรับกรณีหลัง โปรดใช้โครงสร้างกรอบข้อมูล
Python ซีรีย์แพนด้า มีพารามิเตอร์ต่อไปนี้:
- ข้อมูล: อาจเป็นรายการ พจนานุกรม หรือค่าสเกลาร์
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
คุณสามารถเพิ่มดัชนีด้วยดัชนี ช่วยตั้งชื่อแถว ความยาวควรเท่ากับขนาดของคอลัมน์
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
ด้านล่างนี้ คุณสร้างชุด Pandas ที่มีค่าหายไปสำหรับแถวที่สาม หมายเหตุ ไม่มีค่าใน Python มีเครื่องหมาย “NaN” คุณสามารถใช้ numpy เพื่อสร้างค่าที่หายไป: np.nan เทียม
pd.Series([1,2,np.nan])
เอาท์พุต
0 1.0 1 2.0 2 NaN dtype: float64
สร้าง Pandas DataFrame
ในบทช่วยสอน Pandas DataFrame นี้ เราจะได้เรียนรู้วิธีสร้าง Python ดาต้าเฟรมของแพนด้า:
คุณสามารถแปลงอาร์เรย์ numpy ให้เป็น data frame ของ pandas ด้วย pd.Data frame() ตรงกันข้ามก็เป็นไปได้เช่นกัน หากต้องการแปลง Data Frame ของ pandas เป็นอาร์เรย์ คุณสามารถใช้ np.array()
## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]]
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)
## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame: 0 1
0 1 2
1 3 4
Numpy array: [[1 2]
[3 4]]
คุณยังสามารถใช้พจนานุกรมเพื่อสร้าง dataframe ของ Pandas ได้
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| อายุ | ชื่อ | |
|---|---|---|
| 0 | 30 | จอห์น |
| 1 | 40 | Smith |
ข้อมูลช่วงแพนด้า
Pandas มี API ที่สะดวกสบายในการสร้างช่วงวันที่ มาเรียนรู้กับ Python ตัวอย่างแพนด้า:
pd.data_range (วันที่ ระยะเวลา ความถี่):
- พารามิเตอร์แรกคือวันที่เริ่มต้น
- พารามิเตอร์ตัวที่สองคือจำนวนงวด (ไม่บังคับหากระบุวันที่สิ้นสุด)
- พารามิเตอร์สุดท้ายคือความถี่: วัน: 'D,' เดือน: 'M' และปี: 'Y'
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)
เอาท์พุต
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)
เอาท์พุต
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
การตรวจสอบข้อมูล
คุณสามารถตรวจสอบส่วนหัวหรือส่วนท้ายของชุดข้อมูลได้ด้วย head() หรือ tail() นำหน้าด้วยชื่อของกรอบข้อมูลของแพนด้า ดังแสดงในตัวอย่าง Pandas ด้านล่าง:
ขั้นตอน 1) สร้างลำดับสุ่มด้วย มึน- ลำดับมี 4 คอลัมน์ 6 แถว
random = np.random.randn(6,4)
ขั้นตอน 2) จากนั้นคุณสร้าง data frame โดยใช้ pandas
ใช้ Dates_m เป็นดัชนีสำหรับกรอบข้อมูล หมายความว่าแต่ละแถวจะได้รับ "ชื่อ" หรือดัชนีที่สอดคล้องกับวันที่
สุดท้าย คุณตั้งชื่อให้กับคอลัมน์ทั้ง 4 คอลัมน์ด้วยคอลัมน์อาร์กิวเมนต์
# Create data with date
df = pd.DataFrame(random,
index=dates_m,
columns=list('ABCD'))
ขั้นตอน 3) การใช้ฟังก์ชันศีรษะ
df.head(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
| 2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
| 2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
ขั้นตอนที่ 4) การใช้ฟังก์ชันหาง
df.tail(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
| 2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
| 2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
ขั้นตอนที่ 5) แนวทางปฏิบัติที่ดีในการทราบเบาะแสเกี่ยวกับข้อมูลคือการใช้ description() โดยให้ข้อมูลจำนวน ค่าเฉลี่ย มาตรฐาน ต่ำสุด สูงสุด และเปอร์เซ็นไทล์ของชุดข้อมูล
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| นับ | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| หมายความ | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| มาตรฐาน | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| นาที | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
| 25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
| 50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
| 75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
| แม็กซ์ | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
ข้อมูลชิ้น
ข้อสุดท้ายของเรื่องนี้ Python บทช่วยสอนของ Pandas เป็นเรื่องเกี่ยวกับวิธีแบ่งเฟรมข้อมูลของแพนด้า
คุณสามารถใช้ชื่อคอลัมน์เพื่อแยกข้อมูลในคอลัมน์ใดคอลัมน์หนึ่งได้ดังที่แสดงในตัวอย่าง Pandas ด้านล่าง:
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
หากต้องการเลือกหลายคอลัมน์ คุณต้องใช้วงเล็บสองเท่า [[..,..]]
วงเล็บคู่แรกหมายความว่าคุณต้องการเลือกคอลัมน์ ส่วนวงเล็บคู่ที่สองจะบอกคอลัมน์ที่คุณต้องการส่งคืน
df[['A', 'B']].
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
คุณสามารถแบ่งแถวด้วย:
โค้ดด้านล่างส่งคืนสามแถวแรก
### using a slice for row df[0:3]
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
| 2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
| 2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
ฟังก์ชัน loc ใช้สำหรับเลือกคอลัมน์ตามชื่อ ตามปกติ ค่าที่อยู่ก่อนเครื่องหมายจุลภาคจะหมายถึงแถว และค่าที่อยู่หลังเครื่องหมายจุลภาคจะหมายถึงคอลัมน์ คุณต้องใช้เครื่องหมายวงเล็บเพื่อเลือกมากกว่าหนึ่งคอลัมน์
## Multi col df.loc[:,['A','B']]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
มีอีกวิธีหนึ่งในการเลือกหลายแถวและคอลัมน์ใน Pandas คุณสามารถใช้ iloc[] วิธีนี้ใช้ดัชนีแทนชื่อคอลัมน์ รหัสด้านล่างส่งคืน data frame เดียวกันกับด้านบน
df.iloc[:, :2]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
วางคอลัมน์
คุณสามารถวางคอลัมน์โดยใช้ pd.drop()
df.drop(columns=['A', 'C'])
| B | D | |
|---|---|---|
| 2030-01-31 | 0.587590 | -0.031827 |
| 2030-02-28 | 0.998266 | 0.475975 |
| 2030-03-31 | -0.940617 | -0.341532 |
| 2030-04-30 | 0.507350 | -0.296035 |
| 2030-05-31 | 1.276558 | 0.523017 |
| 2030-06-30 | 1.572085 | -0.594772 |
เรียงต่อกัน
คุณสามารถเชื่อม DataFrame สองตัวเข้าด้วยกันใน Pandas คุณสามารถใช้ pd.concat()
ก่อนอื่น คุณต้องสร้าง DataFrame สองอัน ดีมาก คุณคุ้นเคยกับการสร้าง dataframe อยู่แล้ว
import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
'Age': ['25', '30', '50']},
index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
'Age': ['26', '11']},
index=[3, 4])
สุดท้าย คุณเชื่อม DataFrame ทั้งสองเข้าด้วยกัน
df_concat = pd.concat([df1,df2]) df_concat
| อายุ | พร้อมชื่อ | |
|---|---|---|
| 0 | 25 | จอห์น |
| 1 | 30 | Smith |
| 2 | 50 | พอล |
| 3 | 26 | อาดัม |
| 4 | 11 | Smith |
Drop_duplicates
หากชุดข้อมูลอาจมีการใช้ข้อมูลที่ซ้ำกัน `drop_duplicates` ก็สามารถยกเว้นแถวที่ซ้ำกันได้อย่างง่ายดาย คุณจะเห็นว่า `df_concat` มีการสังเกตซ้ำกัน `Smith` ปรากฏสองครั้งในคอลัมน์ `name'
df_concat.drop_duplicates('name')
| อายุ | พร้อมชื่อ | |
|---|---|---|
| 0 | 25 | จอห์น |
| 1 | 30 | Smith |
| 2 | 50 | พอล |
| 3 | 26 | อาดัม |
เรียงลำดับค่า
คุณสามารถเรียงลำดับค่าด้วย sort_values
df_concat.sort_values('Age')
| อายุ | พร้อมชื่อ | |
|---|---|---|
| 4 | 11 | Smith |
| 0 | 25 | จอห์น |
| 3 | 26 | อาดัม |
| 1 | 30 | Smith |
| 2 | 50 | พอล |
เปลี่ยนชื่อ: การเปลี่ยนแปลงดัชนี
คุณสามารถใช้การเปลี่ยนชื่อเพื่อเปลี่ยนชื่อคอลัมน์ใน Pandas ค่าแรกคือชื่อคอลัมน์ปัจจุบัน และค่าที่สองคือชื่อคอลัมน์ใหม่
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| อายุ_คน | นามสกุล | |
|---|---|---|
| 0 | 25 | จอห์น |
| 1 | 30 | Smith |
| 2 | 50 | พอล |
| 3 | 26 | อาดัม |
| 4 | 11 | Smith |
สรุป
ด้านล่างนี้เป็นบทสรุปของวิธีการที่มีประโยชน์ที่สุดสำหรับวิทยาศาสตร์ข้อมูลกับ Pandas
| นำเข้าข้อมูล | read_csv |
|---|---|
| สร้างซีรีส์ | ชุด |
| สร้างดาต้าเฟรม | ดาต้าเฟรม |
| สร้างช่วงวันที่ | DATE_RANGE |
| กลับหัว | หัว |
| หางกลับ | หาง |
| บรรยาย | บรรยาย |
| ชิ้นโดยใช้ชื่อ | ชื่อข้อมูล['ชื่อคอลัมน์'] |
| หั่นโดยใช้แถว | ข้อมูล_ชื่อ[0:5] |

