Cho đến nay, Pandas đã hỗ trợ chúng tôi trong giai đoạn Tiền xử lý dữ liệu. Tuy nhiên, trong một trường hợp, khi tạo Biểu đồ, chúng tôi cũng đã sử dụng một mô-đun khác từ Pandas – plotting
.
Cho đến nay, chúng tôi đã cố tình tránh điều này vì việc giới thiệu nó sớm hơn sẽ đặt ra nhiều câu hỏi hơn là câu trả lời. Cụ thể là Panda và Matplotlib là một bộ đôi phổ biến đến mức Pandas đã bắt đầu tích hợp chức năng của Matplotlib. Nó nặng nề dựa vào Matplotlib để thực hiện bất kỳ sơ đồ thực tế nào và bạn sẽ tìm thấy nhiều hàm Matplotlib được gói trong mã nguồn. Ngoài ra, bạn có thể sử dụng các chương trình phụ trợ khác để vẽ đồ thị, chẳng hạn như Âm mưu và Bokeh.
Tuy nhiên, Pandas cũng giới thiệu cho chúng ta một số âm mưu không phải một phần của các loại cốt truyện tiêu chuẩn của Matplotlib, chẳng hạn như KDE, Đường cong Andrews, Các lô Bootstrap và Ma trận phân tán.
Sản phẩm plot()
chức năng của một con gấu trúc DataFrame
sử dụng phần phụ trợ được chỉ định bởi plotting.backend
và tùy thuộc vào kind
đối số - tạo một âm mưu bằng cách sử dụng thư viện đã cho. Vì có rất nhiều sự trùng lặp - sẽ không có ích gì nếu bao gồm các loại cốt truyện như line
, bar
, hist
và scatter
. Họ sẽ tạo ra nhiều biểu đồ giống nhau với cùng mã như chúng ta đã làm cho đến nay với Matplotlib.
Chúng ta sẽ chỉ xem xét ngắn gọn về plot()
chức năng vì cơ chế cơ bản đã được khám phá cho đến nay. Thay vào đó, hãy tập trung vào một số đồ thị mà chúng ta không thể đã sẵn sàng làm với Matplotlib.
Đây sẽ là một chương rất ngắn, vì khả năng vẽ đồ thị và hiển thị của Pandas kém hơn so với Matplotlib – nhưng vẫn hữu ích nếu biết một số trong số này, cũng như nhận thức được khả năng vẽ đồ thị từ DataFrame
s trực tiếp.
Sản phẩm DataFrame.plot () Chức năng
Sản phẩm plot()
hàm chấp nhận x
và y
các tính năng và một kind
lý lẽ. Ngoài ra, để tránh kind
đối số, bạn cũng có thể gọi DataFrame.plot.kind()
thay vào đó, và vượt qua x
và y
tính năng.
Các giá trị được chấp nhận cho kind
đối số là: line
, bar
, barh
(thanh ngang), hist
, box
, kde
, density
(từ đồng nghĩa với kde
), area
, pie
, scatter
và hexbin
(tương tự như Bản đồ nhiệt).
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()
Thay vì cung cấp Series
các trường hợp như chúng tôi làm với Matplotlib – chỉ cần cung cấp tên cộtvà vì bạn đang gọi plot()
chức năng trên DataFrame
bạn đang hình dung, thật dễ dàng để Pandas ánh xạ các giá trị chuỗi này tới các tên cột thích hợp.
Mỗi cuộc gọi này tạo ra một Figure
ví dụ và vẽ các giá trị thích hợp trên đó:
Để vẽ nhiều trục trên cùng một Figure
, bạn có thể làm một Figure
và một hoặc nhiều Axes
thông qua plt.subplots()
và chỉ định thích hợp Axes
đến ax
đối số của mỗi plot.plot_type()
gọi:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()
Một số đối số tiêu chuẩn, chẳng hạn như rotation
đối số thực sự khác nhau trong plot()
cuộc gọi. Ví dụ, rotation
được rút ngắn thành rot
. Điều này làm cho nó hơi khó khăn để chỉ cần chuyển đổi giữa Matplotlib và Pandas, vì rất có thể bạn sẽ truy cập vào các trang tài liệu, chỉ cần kiểm tra xem đối số nào có thể được áp dụng và đối số nào không.
Bây giờ, thay vì tạo một Figure
or Axes
ví dụ, mỗi lô đất này sẽ được đóng ở nơi thích hợp Axes
các trường hợp chúng tôi đã cung cấp cho họ:
Nhìn chung, việc vẽ đồ thị bằng Pandas rất tiện lợi và nhanh chóng – nhưng ngay cả như vậy, để vẽ đồ thị Thanh, Ô đường và Ô hộp, có thể bạn sẽ muốn sử dụng Matplotlib. Đó vừa là công cụ cơ bản mà Pandas chắc chắn sẽ sử dụng, vừa có nhiều tùy chọn tùy chỉnh hơn và bạn sẽ không phải nhớ một bộ đối số mới mà bạn có thể sử dụng với các biểu đồ Pandas.
Điều đó đang được nói, đối với một số âm mưu, bạn có thể muốn Gấu trúc, vì chúng phải được tạo thủ công trong Matplotlib và một số trong số chúng rất rắc rối đến mức không đáng nỗ lực, chẳng hạn như các dòng KDE.
gấu trúc' âm mưu Mô-đun
Điều gì DataFrame
những gì phải cung cấp về mặt trực quan không còn quá mới đối với chúng tôi. Tuy nhiên, mô-đun cơ bản mà họ gọi, pandas.plotting
làm. Các plotting
mô-đun có một số chức năng mà chúng tôi có thể sử dụng, chẳng hạn như autocorrelation_plot()
, bootstrap_plot()
và scatter_matrix()
.
Mỗi người trong số này chấp nhận một Series
hoặc một DataFrame
, tùy thuộc vào loại hình ảnh trực quan mà họ đang tạo ra, cũng như các thông số nhất định để vẽ biểu đồ cho mục đích tạo kiểu và đặc tả.
Lô khởi động
khởi động là quá trình lấy mẫu ngẫu nhiên (có thay thế) một tập dữ liệu và tính toán các thước đo độ chính xác, chẳng hạn như thiên vị, không đúng và khoảng tin cậy đối với các mẫu ngẫu nhiên “Với sự thay thế”, về mặt thực tế, có nghĩa là mỗi phần tử được chọn ngẫu nhiên có thể được chọn lại. Không có vật thay thế có nghĩa là sau mỗi phần tử được chọn ngẫu nhiên, nó sẽ bị xóa khỏi nhóm cho mẫu tiếp theo.
A Lô khởi động, được tạo bởi Pandas bootstraps thống kê trung bình, trung bình và trung bình của tập dữ liệu, dựa trên mẫu size
, sau đó, cốt truyện sau đó được hiển thị qua plt.show()
. Các đối số mặc định cho size
và samples
đang 50
và 500
tương ứng.
Điều này có nghĩa là đối với một tính năng, chúng tôi lấy mẫu 50
các giá trị. Sau đó, một mẫu con gồm 50 phần tử được tạo (dữ liệu tổng hợp) cho 50 giá trị đó và thống kê tóm tắt (giá trị trung bình / giá trị trung bình / giá trị trung bình) được tính toán cho chúng. Quá trình này được lặp lại 500
lần, nên cuối cùng, chúng ta có 500 thống kê tóm tắt:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()
Ô tự tương quan
Lô tự tương quan được sử dụng để kiểm tra tính ngẫu nhiên của dữ liệu, đối với dữ liệu chuỗi thời gian. Nhiều tự tương quan được tính toán cho các dấu thời gian khác nhau và nếu dữ liệu thực sự ngẫu nhiên – mối tương quan sẽ gần bằng 0. Nếu không – mối tương quan sẽ lớn hơn 0.
Hãy vẽ hai Đồ thị tự tương quan – một với đồ thị của chúng ta Giá trị và một tính năng có Series
chứa đầy các giá trị ngẫu nhiên:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()
Biểu đồ tự tương quan cho random_series
nên xoay quanh 0
, vì đó là dữ liệu ngẫu nhiên, trong khi biểu đồ cho Value
tính năng sẽ không:
Điều đáng lưu ý là Tự tương quan đo lường một hình thức về tính ngẫu nhiên, vì dữ liệu không tương quan nhưng không ngẫu nhiên tồn tại. Nếu nó không ngẫu nhiên nhưng không có bất kỳ mối tương quan đáng kể nào – Biểu đồ Tự tương quan sẽ chỉ ra rằng dữ liệu là ngẫu nhiên.
Ma trận phân tán
Ma trận phân tán âm mưu một lưới điện của Biểu đồ phân tán cho tất cả các tính năng đối với tất cả các tính năng. Vì điều này chắc chắn sẽ so sánh từng tính năng với chính nó – đường chéo nơi điều này xảy ra thường được thay thế bằng Histogram của đối tượng địa lý đó, chứ không phải là Biểu đồ phân tán. Ma trận phân tán còn được gọi là Ghép lôvà Seaborn cung cấp một pairplot()
chức năng chỉ cho điều này.
Sản phẩm scatter_matrix()
hàm chấp nhận một DataFrame
và tạo Ma trận phân tán cho tất cả các tính năng số của nó và trả về một mảng 2D của Axes
các trường hợp bao gồm Ma trận phân tán. Để điều chỉnh bất cứ điều gì về chúng, bạn sẽ muốn lặp lại chúng:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()
Điều này dẫn đến một Ma trận phân tán khá lớn của tất cả các tính năng so với tất cả các tính năng khác:
Bạn cũng có thể vượt qua diagonal
đối số, chấp nhận 'hist'
or 'kde'
để chỉ định loại biểu đồ phân phối mà bạn muốn vẽ trên đường chéo, cũng như alpha
, chỉ định độ trong suốt của các điểm đánh dấu trong Lô phân tán.
- 100
- Giới thiệu
- Tất cả
- Đã
- Một
- đối số
- xung quanh
- được
- Một chút
- Hộp
- cuộc gọi
- khả năng
- Chương
- kiểm tra
- mã
- Cột
- Chung
- đất nước
- Couple
- Tạo
- dữ liệu
- khác nhau
- phân phối
- Châu Âu
- union union
- ví dụ
- Đặc tính
- Tính năng
- Tập trung
- chức năng
- chức năng
- Tổng Quát
- tạo ra
- HTTPS
- IT
- nổi tiếng
- lớn
- lớn hơn
- Thư viện
- Dòng
- bản đồ
- Matrix
- hầu hết
- cụ thể là
- tên
- Gần
- cung cấp
- Cung cấp
- Các lựa chọn
- Nền tảng khác
- giai đoạn
- hồ bơi
- quá trình
- sản xuất
- cho
- mục đích
- nâng cao
- RE
- thay thế
- Kết quả
- Trả về
- Nói
- chọn
- định
- ngắn
- có ý nghĩa
- tương tự
- So
- mã nguồn
- đặc điểm kỹ thuật
- bắt đầu
- số liệu thống kê
- Nguồn
- Thông qua
- công đoàn
- us
- giá trị
- hình dung
- Điều gì
- Wikipedia
- giá trị
- X
- năm
- không