Cách tính phần trăm thay đổi trong Python

Lưu ý rằng bạn cũng có thể sử dụng đối số khoảng thời gian để tính phần trăm thay đổi giữa các giá trị ở các khoảng thời gian khác nhau.
import pandas as pd

#create pandas Series
s = pd.Series([6, 14, 12, 18, 19])

#calculate percent change between values 2 positions apart
s.pct_change(periods=2) 

0         NaN
1         NaN
2    1.000000
3    0.285714
4    0.583333
dtype: float64

Đây là cách các giá trị này được tính toán

  • chỉ số 2. (12 – 6) / 6 = 1. 000000
  • chỉ số 3. (18 – 14) / 14 = 0. 285714
  • chỉ số 4. (19 – 12) / 12 =. 583333

ví dụ 2. Phần trăm thay đổi trong DataFrame của gấu trúc

Mã sau đây cho biết cách tính toán phần trăm thay đổi giữa các hàng liên tiếp trong DataFrame gấu trúc

nhập gấu trúc dưới dạng pd

nhiệt độ = {"Vị trí 1". (67, 65, 64, 62, 63, 62, 60),

"Địa điểm 2". (63, 61, 62, 64, 63, 65, 66),

"Địa điểm 3". (52, 53, 52, 55, 52, 54, 56)};

dataFrame   = pd. Khung dữ liệu (dữ liệu = nhiệt độ);

print("Dữ liệu nhiệt độ");

in (khung dữ liệu);

print("% thay doi trong nhiet do. ")

pctChange = khung dữ liệu. pct_change(dấu chấm=-1);

in(pctChange);

print("% Thay đổi nhiệt độ trong các ngày luân phiên. ")

pctChange = khung dữ liệu. pct_change(dấu chấm=-2);

in(pctChange);

Trong bài đăng này, tôi sẽ chỉ cho bạn cách chúng ta có thể tìm thấy sự thay đổi về tỷ lệ phần trăm giữa hai số trong python

Đây là một chương trình python thân thiện với người mới bắt đầu và bạn sẽ có ý tưởng về cách chúng tôi có thể lấy thông tin đầu vào của người dùng và cách tính chênh lệch tỷ lệ phần trăm trong Python

Khi làm việc với các khung dữ liệu Pandas, nhiệm vụ rất phổ biến là tính toán sự khác biệt giữa hai hàng. Ví dụ: bạn có thể muốn tính chênh lệch về số lượng khách truy cập vào trang web của mình giữa hai ngày hoặc chênh lệch giá cổ phiếu giữa hai ngày

Thực tế, có một số cách khác nhau để tính toán sự khác biệt giữa hai hàng trong Pandas và tính phần trăm thay đổi của chúng. Trong bài đăng này, chúng ta sẽ xem xét hai trong số các phương pháp phổ biến nhất. diff()pct_change(), được thiết kế đặc biệt cho tác vụ này và thực hiện cùng một việc trên các giá trị cột

Nhập dữ liệu

Để bắt đầu, hãy mở sổ ghi chép Jupyter mới và nhập dữ liệu. Chúng tôi sẽ sử dụng thư viện pandas để đọc dữ liệu từ tệp CSV vào khung dữ liệu bằng hàm read_csv(). Pandas hỗ trợ nhập dữ liệu từ một số định dạng tệp khác nhau, bao gồm CSV, Excel, JSON và SQL

df = pd.read_csv('https://raw.githubusercontent.com/flyandlure/datasets/master/causal_impact_dataset.csv')
df.head()

dateclicksimpressionsctrposition02021-07-0413663012. 1631. 9712021-07-0526486973. 0427. 6622021-07-0629992363. 2426. 3832021-07-07276100082. 7626. 7742021-07-0828397252. 9125. 83

Tính toán sự khác biệt giữa mỗi hàng bằng cách sử dụng diff()

Điều quan trọng, bạn cần đảm bảo khung dữ liệu Pandas của mình đã được sắp xếp theo thứ tự hợp lý trước khi bạn tính toán sự khác biệt giữa các hàng hoặc phần trăm thay đổi của chúng. Bạn có thể thực hiện việc này bằng cách nối thêm .sort_values(by='column_name_here') vào cuối khung dữ liệu của mình và chuyển tên cột mà bạn muốn sắp xếp theo

Để tính toán sự khác biệt giữa các giá trị được chọn trong mỗi hàng của khung dữ liệu của chúng tôi, chúng tôi chỉ cần thêm .diff() vào cuối tên cột của chúng tôi và sau đó gán giá trị cho một cột mới trong khung dữ liệu của chúng tôi. Chúng tôi không cần phải làm điều đó ở đây, nhưng tham số


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
0 có thể được sử dụng để tính toán sự khác biệt giữa các cột thay vì hàng và tham số

```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
1 có thể được sử dụng để tính toán sự khác biệt giữa các hàng cách xa nhau hơn so với hàng tiếp theo bằng cách sử dụng


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)

dateclicksimpressionsctrpositionclicks_diffimpressions_diffctr_diffposition_diff02021-07-0413663012. 1631. 97NaNNaNNaNNaN12021-07-0526486973. 0427. 66128. 02396. 00. 88-4. 3122021-07-0629992363. 2426. 3835. 0539. 00. 20-1. 2832021-07-07276100082. 7626. 77-23. 0772. 0-0. 480. 3942021-07-0828397252. 9125. 837. 0-283. 00. 15-0. 9452021-07-0920582732. 4827. 65-78. 0-1452. 0-0. 431. 8262021-07-1010671861. 4833. 74-99. 0-1087. 0-1. 006. 0972021-07-1116474312. 2131. 7558. 0245. 00. 73-1. 9982021-07-12316111012. 8526. 94152. 03670. 00. 64-4. 8192021-07-13314114942. 7326. 90-2. 0393. 0-0. 12-0. 04

Tính phần trăm thay đổi giữa mỗi hàng với pct_change()

Cách tiếp cận tương tự có thể được sử dụng để tính phần trăm thay đổi giữa các giá trị được chọn trong mỗi hàng của khung dữ liệu của chúng tôi. Như với diff(), chúng ta chỉ cần thêm


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
4 vào cuối tên cột và sau đó gán giá trị cho một cột mới

Hàm pct_change() sẽ tính phần trăm thay đổi giữa mỗi hàng và hàng trước đó. Điều này có nghĩa là hàng đầu tiên sẽ luôn là


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
6 vì không có hàng trước đó để so sánh với. Như với diff(), hàm pct_change() có một số đối số khác có thể được sử dụng để thay đổi hành vi của hàm

Ví dụ: chúng ta có thể sử dụng đối số


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
1 để chỉ định số lượng hàng cần so sánh với. Điều này hữu ích nếu chúng ta muốn so sánh hàng hiện tại với một hàng không phải là hàng trước đó. Ví dụ: nếu chúng tôi muốn so sánh hàng hiện tại với hàng cách đây 3 hàng, chúng tôi có thể sử dụng
df['clicks_pct_change'] = df['clicks'].pct_change()
df['impressions_pct_change'] = df['impressions'].pct_change()
df['ctr_pct_change'] = df['ctr'].pct_change()
df['position_pct_change'] = df['position'].pct_change()
df.head(10)
0

df['clicks_pct_change'] = df['clicks'].pct_change()
df['impressions_pct_change'] = df['impressions'].pct_change()
df['ctr_pct_change'] = df['ctr'].pct_change()
df['position_pct_change'] = df['position'].pct_change()
df.head(10)

dateclicksimpressionsctrpositionclicks_diffimpressions_diffctr_diffposition_diffclicks_pct_changeimpressions_pct_changectr_pct_changeposition_pct_change02021-07-0413663012. 1631. 97NaNNaNNaNNaNNaNNaNNaN12021-07-0526486973. 0427. 66128. 02396. 00. 88-4. 310. 9411760. 3802570. 407407-0. 13481422021-07-0629992363. 2426. 3835. 0539. 00. 20-1. 280. 1325760. 0619750. 065789-0. 04627632021-07-07276100082. 7626. 77-23. 0772. 0-0. 480. 39-0. 0769230. 083586-0. 1481480. 01478442021-07-0828397252. 9125. 837. 0-283. 00. 15-0. 940. 025362-0. 0282770. 054348-0. 03511452021-07-0920582732. 4827. 65-78. 0-1452. 0-0. 431. 82-0. 275618-0. 149306-0. 1477660. 07046162021-07-1010671861. 4833. 74-99. 0-1087. 0-1. 006. 09-0. 482927-0. 131391-0. 4032260. 22025372021-07-1116474312. 2131. 7558. 0245. 00. 73-1. 990. 5471700. 0340940. 493243-0. 05898082021-07-12316111012. 8526. 94152. 03670. 00. 64-4. 810. 9268290. 4938770. 289593-0. 15149692021-07-13314114942. 7326. 90-2. 0393. 0-0. 12-0. 04-0. 0063290. 035402-0. 042105-0. 001485

Tính phần trăm thay đổi so với cùng ngày tuần trước

Để tính phần trăm thay đổi trong một số liệu so với cùng ngày tuần trước, chúng ta có thể chuyển một giá trị cho đối số


```python
df['clicks_diff'] = df['clicks'].diff()
df['impressions_diff'] = df['impressions'].diff()
df['ctr_diff'] = df['ctr'].diff()
df['position_diff'] = df['position'].diff()
df.head(10)
1 của hàm pct_change(). Điều này sẽ tính phần trăm thay đổi trong chỉ số so với cùng ngày của tuần trước

# Calculate the percentage change between each row and the previous week
df['clicks_pct_change_week'] = df['clicks'].pct_change(periods=7)
df['impressions_pct_change_week'] = df['impressions'].pct_change(periods=7)
df['ctr_pct_change_week'] = df['ctr'].pct_change(periods=7)
df['position_pct_change_week'] = df['position'].pct_change(periods=7)

# Show the original data and the weekly percentage changes
df[['clicks', 'clicks_pct_change_week', 'impressions', 'impressions_pct_change_week', 'ctr', 'ctr_pct_change_week', 'position', 'position_pct_change_week']].tail(10)

clicksclicks_pct_change_weekimpressionsimpressions_pct_change_weekctrctr_pct_change_weekpositionposition_pct_change_week184240. 452055159880. 3670802. 650. 06000026. 65-0. 026662193570. 469136145900. 3435862. 450. 09375026. 92-0. 094517202560. 651613119870. 5485082. 140. 07000030. 34-0. 081997212570. 502924122270. 3650782. 100. 09947629. 55-0. 054097224710. 539216159340. 2329002. 960. 24894524. 28-0. 104390234620. 350877155160. 1913392. 980. 13308024. 55-0. 051757244180. 208092155900. 1040292. 680. 09387824. 90-0. 058245254770. 125000168420. 0534152. 830. 06792523. 83-0. 10581626340-0. 04761913867-0. 0495542. 450. 00000026. 18-0. 02748927194-0. 2421889749-0. 1867021. 99-0. 07009331. 420. 035597

Làm thế nào để tính phần trăm thay đổi trong gấu trúc?

Cách tính phần trăm thay đổi trong gấu trúc .
chỉ số 1. (14 – 6) / 6 = 1. 333333
chỉ số 2. (12 – 14) / 14 = -. 142857
chỉ số 3. (18 – 12) / 12 = 0. 5
chỉ số 4. (19 – 18) / 18 =. 055556

pct_change() hoạt động như thế nào?

Phương thức pct_change() trả về DataFrame có phần trăm chênh lệch giữa các giá trị cho mỗi hàng và theo mặc định là hàng trước đó . Hàng nào để so sánh có thể được chỉ định với tham số thời gian.