Nhóm danh sách python theo

Pandas GroupBy là một hàm mạnh mẽ và linh hoạt trong Python. Nó cho phép bạn chia dữ liệu của mình thành các nhóm riêng biệt để thực hiện các phép tính phân tích tốt hơn, cũng như hoàn toàn tương tự như groupby trong SQL

Please to me get a example to giải thích rõ hơn về điều này. Giả sử chúng ta có một tập tin Bán hàng. xlsx tổng hợp các đơn hàng trong ngày và chúng ta muốn xem mặt hàng nào có doanh số cao nhất, thấp nhất trong ngày [cột đơn hàng] thì sẽ như sau

Để thực hiện tất cả các bước trên trong python chỉ cần một lệnh groupby đơn giản. ¶

Trước hết cần tải tệp dữ liệu Bán hàng lên

import pandas as pd
Sales = pd.read_excel['Sales.xlsx']
Sales

tài khoảnđặt hàngext price038308010001235. 83138308010001232. 32238308010001107. 973412290100052679. 36441229010005286. 02541229010005832. 956412290100053472. 04741229010005915. 128218895100063061. 12921889510006518. 651021889510006216. 901121889510006-72. 18

Sau đó, sử dụng một lệnh groupby đơn giản để nhóm dữ liệu theo cột 'thứ tự'

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped

giá mở rộngorder10001576. 12100058185. 49100063724. 49

Nếu dữ liệu lớn có thể sắp xếp theo thứ tự tăng hoặc giảm dần để dễ đánh giá

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped

giá mở rộngorder10001576. 12100063724. 49100058185. 49

Hàm groupby trong gấu trúc còn có nhiều tham số khác để bạn có thể tùy chỉnh. ¶

Khung dữ liệu. groupby[by=None, level=None, as_index=True, sort=True, dropna=True]

  • qua. chỉ định tiêu chí, đối tượng cần nhóm, như cột 'thứ tự' trong ví dụ trên
  • mức độ. integer or string type. Nếu trục là MultiIndex [phân cấp], thì nhóm theo các cấp cụ thể
  • as_index. kiểu bool, default=True. Biến tiêu chí cột thành Index [chỉ số], as_index = False thì giữ nguyên chỉ mục cũ
  • loại. kiểu bool, default=True. Sắp xếp các cột tiêu chí theo thứ tự
  • dropna. kiểu bool, default=True. Loại bỏ những hàng và cột có giá trị Nan

# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df

Vận tốc tối đa [km/h]LoàiMôi trường sốngChim ưng Được nuôi390. 0Hoàng dã350. 0Vẹt được nuôi30. 0Hoàng dã20. 0

Bạn có thể chuyển đổi hiển thị lời nhắc và đầu ra bằng cách nhấp vào

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
1 ở góc trên bên phải của hộp ví dụ. Nếu bạn ẩn lời nhắc và xuất ra một ví dụ, thì bạn có thể dễ dàng sao chép và dán các dòng đầu vào vào trình thông dịch của mình

Nhiều ví dụ trong sách hướng dẫn này, ngay cả những ví dụ được nhập tại dấu nhắc tương tác, bao gồm nhận xét. Nhận xét trong Python bắt đầu bằng ký tự băm,

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
2 và kéo dài đến cuối dòng vật lý. Một nhận xét có thể xuất hiện ở đầu dòng hoặc sau khoảng trắng hoặc mã, nhưng không xuất hiện trong một chuỗi ký tự. Một ký tự băm trong một chuỗi ký tự chỉ là một ký tự băm. Vì các nhận xét là để làm rõ mã và không được giải thích bởi Python, chúng có thể bị bỏ qua khi nhập các ví dụ

Vài ví dụ

# this is the first comment
spam = 1  # and this is the second comment
          # .. and now a third!
text = "# This is not a comment because it's inside quotes."

3. 1. Sử dụng Python làm Máy tính¶

Hãy thử một số lệnh Python đơn giản. Khởi động trình thông dịch và chờ lời nhắc chính,

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
1. [Không nên mất nhiều thời gian. ]

3. 1. 1. Số¶

Trình thông dịch hoạt động như một máy tính đơn giản. bạn có thể nhập một biểu thức vào nó và nó sẽ ghi giá trị. Cú pháp biểu thức đơn giản. các toán tử

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
4,
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
5,
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
6 và
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
7 hoạt động giống như trong hầu hết các ngôn ngữ khác [ví dụ: Pascal hoặc C]; . Ví dụ

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
3

Các số nguyên [e. g. ________ 49, ________ 150, ________ 151] có dạng _______ 152, những bài có phần phân số [e. g.

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
53,
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
54] có loại
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
55. Chúng ta sẽ xem thêm về các loại số sau trong hướng dẫn

Division [

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
7] luôn trả về một float. Để thực hiện chia tầng và nhận kết quả là số nguyên, bạn có thể sử dụng toán tử
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
57; .

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
4

Với Python, có thể sử dụng toán tử

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
59 để tính lũy thừa 1

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
6

Dấu bằng [

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
70] được sử dụng để gán giá trị cho một biến. Sau đó, không có kết quả nào được hiển thị trước lời nhắc tương tác tiếp theo

>>> width = 20
>>> height = 5 * 9
>>> width * height
900

Nếu một biến không được "xác định" [được gán một giá trị], cố gắng sử dụng nó sẽ báo lỗi cho bạn

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
5

Có hỗ trợ đầy đủ cho dấu phẩy động;

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
7

Trong chế độ tương tác, biểu thức in cuối cùng được gán cho biến

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
71. Điều này có nghĩa là khi bạn đang sử dụng Python làm máy tính bàn, việc tiếp tục tính toán sẽ dễ dàng hơn một chút, chẳng hạn

# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
2

Biến này phải được người dùng coi là chỉ đọc. Không gán giá trị cho nó một cách rõ ràng — bạn sẽ tạo một biến cục bộ độc lập có cùng tên che dấu biến tích hợp với hành vi kỳ diệu của nó

Ngoài

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
52 và
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
55, Python hỗ trợ các loại số khác, chẳng hạn như
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
74 và
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
75. Python cũng có hỗ trợ tích hợp cho số phức và sử dụng hậu tố
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
76 hoặc
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
77 để biểu thị phần ảo [e. g.
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
78].

3. 1. 2. Chuỗi¶

Bên cạnh các số, Python cũng có thể thao tác với các chuỗi, có thể được biểu diễn theo nhiều cách. Chúng có thể được đặt trong dấu ngoặc đơn [

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
79] hoặc dấu ngoặc kép [
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
20] với kết quả như nhau 2.
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
21 có thể được sử dụng để thoát dấu ngoặc kép

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
3

Trong trình thông dịch tương tác, chuỗi đầu ra được đặt trong dấu ngoặc kép và các ký tự đặc biệt được thoát bằng dấu gạch chéo ngược. Mặc dù điều này đôi khi trông khác với đầu vào [dấu ngoặc kép kèm theo có thể thay đổi], hai chuỗi này tương đương nhau. Chuỗi được đặt trong dấu nháy kép nếu chuỗi chứa dấu nháy đơn và không có dấu nháy kép, ngược lại chuỗi được đặt trong dấu nháy đơn. Hàm

# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
22 tạo ra đầu ra dễ đọc hơn, bằng cách bỏ qua các dấu ngoặc kép kèm theo và bằng cách in các ký tự thoát và ký tự đặc biệt

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
5

Nếu bạn không muốn các ký tự mở đầu bằng

# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
21 được hiểu là các ký tự đặc biệt, bạn có thể sử dụng các chuỗi thô bằng cách thêm một
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
24 trước trích dẫn đầu tiên

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
30

Chuỗi ký tự có thể kéo dài nhiều dòng. Một cách là sử dụng dấu ngoặc kép.

# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
25 hoặc
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
26. Cuối dòng được tự động đưa vào chuỗi, nhưng có thể ngăn chặn điều này bằng cách thêm
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
21 vào cuối dòng. ví dụ sau

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
31

tạo đầu ra sau [lưu ý rằng không bao gồm dòng mới ban đầu]

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
32

Các chuỗi có thể được nối [dán lại với nhau] bằng toán tử

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
4 và lặp lại với
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
6

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
33

Hai hoặc nhiều chuỗi ký tự [i. e. những cái được đặt giữa các dấu ngoặc kép] cạnh nhau sẽ tự động được nối

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
34

Tính năng này đặc biệt hữu ích khi bạn muốn ngắt các chuỗi dài

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
35

Tuy nhiên, điều này chỉ hoạt động với hai chữ, không hoạt động với các biến hoặc biểu thức

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
36

Nếu bạn muốn nối các biến hoặc một biến và một chữ, hãy sử dụng

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
4

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
37

Các chuỗi có thể được lập chỉ mục [được đăng ký], với ký tự đầu tiên có chỉ số 0. Không có loại ký tự riêng biệt;

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
38

Các chỉ số cũng có thể là số âm, để bắt đầu đếm từ bên phải

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
39

Lưu ý rằng vì -0 giống như 0, nên các chỉ số âm bắt đầu từ -1

Ngoài lập chỉ mục, cắt lát cũng được hỗ trợ. Trong khi lập chỉ mục được sử dụng để lấy các ký tự riêng lẻ, thì việc cắt lát cho phép bạn lấy chuỗi con

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
40

Các chỉ số lát cắt có các giá trị mặc định hữu ích;

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
41

Lưu ý cách bắt đầu luôn được bao gồm và kết thúc luôn bị loại trừ. Điều này đảm bảo rằng

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
31 luôn bằng với
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
32

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
42

Một cách để nhớ cách thức hoạt động của các lát cắt là coi các chỉ số như trỏ giữa các ký tự, với cạnh trái của ký tự đầu tiên được đánh số 0. Khi đó cạnh phải của ký tự cuối cùng của xâu n ký tự có chỉ số n chẳng hạn

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
43

Hàng số đầu tiên cho biết vị trí của các chỉ số 0…6 trong chuỗi; . Lát cắt từ i đến j bao gồm tất cả các ký tự nằm giữa các cạnh có nhãn tương ứng là i và j

Đối với các chỉ số không âm, độ dài của một lát cắt là sự khác biệt của các chỉ số, nếu cả hai đều nằm trong giới hạn. Ví dụ: chiều dài của

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
33 là 2

Cố gắng sử dụng một chỉ mục quá lớn sẽ dẫn đến lỗi

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
44

Tuy nhiên, các chỉ mục lát cắt nằm ngoài phạm vi được xử lý một cách duyên dáng khi được sử dụng để cắt lát

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
45

Không thể thay đổi chuỗi Python — chúng bất biến . Do đó, việc gán cho một vị trí được lập chỉ mục trong chuỗi dẫn đến lỗi.

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
46

Nếu bạn cần một chuỗi khác, bạn nên tạo một chuỗi mới

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
47

Hàm tích hợp sẵn

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
34 trả về độ dài của chuỗi

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
48

Xem thêm

Loại chuỗi văn bản — str

Chuỗi là ví dụ về các loại trình tự và hỗ trợ các hoạt động phổ biến được hỗ trợ bởi các loại đó

Phương thức chuỗi

Các chuỗi hỗ trợ một số lượng lớn các phương thức để chuyển đổi và tìm kiếm cơ bản

Chuỗi ký tự được định dạng

Chuỗi ký tự có biểu thức nhúng

Cú pháp chuỗi định dạng

Thông tin về định dạng chuỗi với

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
35

Định dạng chuỗi kiểu printf

Các hoạt động định dạng cũ được gọi khi chuỗi là toán hạng bên trái của toán tử

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
58 được mô tả chi tiết hơn tại đây

3. 1. 3. Danh sách¶

Python biết một số loại dữ liệu phức hợp, được sử dụng để nhóm các giá trị khác lại với nhau. Linh hoạt nhất là danh sách, có thể được viết dưới dạng danh sách các giá trị [mục] được phân tách bằng dấu phẩy giữa các dấu ngoặc vuông. Danh sách có thể chứa các mục thuộc các loại khác nhau, nhưng thông thường tất cả các mục đều có cùng loại

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
49

Giống như chuỗi [và tất cả các loại trình tự tích hợp sẵn khác], danh sách có thể được lập chỉ mục và cắt lát.

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
60

Tất cả các thao tác cắt trả về một danh sách mới chứa các phần tử được yêu cầu. Điều này có nghĩa là lát cắt sau trả về một bản sao nông của danh sách.

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
61

Danh sách cũng hỗ trợ các hoạt động như nối

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
62

Không giống như chuỗi không thay đổi , danh sách là có thể thay đổi type, i.e. it is possible to change their content:

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
63

Bạn cũng có thể thêm các mục mới vào cuối danh sách bằng cách sử dụng phương thức

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
37 [chúng ta sẽ xem thêm về các phương thức sau]

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
64

Cũng có thể gán cho các lát và điều này thậm chí có thể thay đổi kích thước của danh sách hoặc xóa hoàn toàn

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
65

Hàm tích hợp sẵn

>>> width = 20
>>> height = 5 * 9
>>> width * height
900
34 cũng áp dụng cho danh sách

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
66

Có thể lồng danh sách [tạo danh sách chứa danh sách khác] chẳng hạn

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
67

3. 2. Những bước đầu tiên để lập trình¶

Tất nhiên, chúng ta có thể sử dụng Python cho các tác vụ phức tạp hơn là cộng hai với hai lại với nhau. Chẳng hạn, chúng ta có thể viết một dãy con ban đầu của dãy Fibonacci như sau

# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
68

Ví dụ này giới thiệu một số tính năng mới

  • Dòng đầu tiên chứa nhiều nhiệm vụ. các biến

    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    39 và
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    50 đồng thời nhận các giá trị mới 0 và 1. Ở dòng cuối cùng, điều này được sử dụng lại, chứng minh rằng tất cả các biểu thức ở phía bên tay phải đều được ước tính trước khi thực hiện bất kỳ phép gán nào. Các biểu thức bên phải được đánh giá từ trái sang phải

  • Vòng lặp

    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    51 thực hiện miễn là điều kiện [ở đây.
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    52] vẫn đúng. Trong Python, giống như trong C, mọi giá trị số nguyên khác 0 đều đúng; . Điều kiện cũng có thể là một chuỗi hoặc giá trị danh sách, trên thực tế là bất kỳ chuỗi nào; . Bài kiểm tra được sử dụng trong ví dụ là phép so sánh đơn giản. Các toán tử so sánh tiêu chuẩn được viết giống như trong C.
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    53 [nhỏ hơn],
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    54 [lớn hơn],
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    55 [bằng],
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    56 [nhỏ hơn hoặc bằng], ________ 457 [lớn hơn hoặc bằng] và ________ 458 [không bằng]

  • Phần thân của vòng lặp được thụt vào. thụt lề là cách nhóm các câu lệnh của Python. Tại dấu nhắc tương tác, bạn phải nhập một tab hoặc [các] dấu cách cho mỗi dòng thụt vào. Trong thực tế, bạn sẽ chuẩn bị đầu vào phức tạp hơn cho Python bằng trình soạn thảo văn bản; . Khi một câu lệnh ghép được nhập một cách tương tác, nó phải được theo sau bởi một dòng trống để biểu thị việc hoàn thành [vì trình phân tích cú pháp không thể đoán khi bạn đã nhập dòng cuối cùng]. Lưu ý rằng mỗi dòng trong một khối cơ bản phải được thụt vào cùng một lượng

  • Hàm

    # Tạo Dataframe
    arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
              ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
    index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
    df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                      index=index]
    df
    22 ghi giá trị của [các] đối số mà nó được cung cấp. Nó khác với việc chỉ viết biểu thức mà bạn muốn viết [như chúng ta đã làm trước đó trong các ví dụ về máy tính] ở cách nó xử lý nhiều đối số, số lượng dấu phẩy động và chuỗi. Các chuỗi được in mà không có dấu ngoặc kép và khoảng trắng được chèn vào giữa các mục, vì vậy bạn có thể định dạng mọi thứ một cách độc đáo, như thế này

    # sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
    Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
    Sales_grouped
    69

    Đối số từ khóa end có thể được sử dụng để tránh dòng mới sau đầu ra hoặc kết thúc đầu ra bằng một chuỗi khác

    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    
    0

chú thích

1

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
59 có quyền ưu tiên cao hơn
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
5, nên
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
302 sẽ được hiểu là
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
303 và do đó dẫn đến
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
304. Để tránh điều này và nhận được
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
305, bạn có thể sử dụng
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
306

2

Không giống như các ngôn ngữ khác, các ký tự đặc biệt như

# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
307 có cùng ý nghĩa với cả dấu ngoặc đơn [
# sort_values[by='ext price', ascending=True] lệnh sắp xếp dữ liệu theo cột 'ext price' theo thứ tự tăng dần [ascending=True], nếu giảm dần thì [ascending=False]
Sales_grouped = Sales.groupby['order',group_keys=False].agg[{'ext price': 'sum'}].sort_values[by='ext price', ascending=True]
Sales_grouped
79] và dấu ngoặc kép [
# Tạo Dataframe
arrays = [['Chim ưng', 'Chim ưng', 'Vẹt', 'Vẹt'],
          ['Được nuôi', 'Hoang dã','Được nuôi', 'Hoang dã']]
index = pd.MultiIndex.from_arrays[arrays, names=['Loài', 'Môi trường sống']]
df = pd.DataFrame[{'Vận tốc tối đa [km/h]': [390., 350., 30., 20.]},
                  index=index]
df
20]. Sự khác biệt duy nhất giữa hai loại này là trong các dấu ngoặc đơn, bạn không cần phải thoát khỏi
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
310 [nhưng bạn phải thoát khỏi
# groupby['order'] là cột tiêu chí mà chúng ta muốn nhóm dữ liệu theo tiêu chí đó, có thể có một hoặc nhiều tiêu chí
# agg[{'ext price': 'sum'}] là cột dữ liệu mà chúng ta đang muốn nhóm, và nhóm theo kiểu lấy tổng [sum]
Sales_grouped = Sales.groupby[by='order'].agg[{'ext price': 'sum'}]
Sales_grouped
311] và ngược lại

Chủ Đề