Sử dụng gấu trúc và numpy để thay thế excel.
Hình ảnh của tác giả [Made On Canva]Là một người đã làm việc với Excel trong nhiều năm, tôi biết rằng ý tưởng học những điều bạn đã có thể làm trong Excel/VBA trong một môi trường hoàn toàn mới như Python không có vẻ thú vị. Tuy nhiên, tất cả những lợi ích mà môi trường Python cung cấp làm cho điều này xứng đáng. Vì lý do này, tôi đã đưa ra một hướng dẫn hữu ích và đơn giản mà tôi ước mình có khi tôi chuyển từ Excel sang Python.
Trong bài viết này, chúng tôi sẽ sử dụng Python từ Pandas và Numpy Library để thay thế nhiều chức năng Excel mà bạn có thể đã sử dụng trong quá khứ.
Table of Contents
1. The Dataset
2. Sum, Average, Max, Min, Count
- Columns [e.g. sum a column]
- Rows [e.g. sum a row]
3. IF
- Replace IF with np.where
- Replace nested IF with np.select
4. SumIf, CountIf, AverageIf
- One condition [select a column with square brackets [ ] ]
- Two or more conditions [select columns and use & or |]
5. Basic Data Cleaning
- Change the case of text with .str.lower, .str.upper or .str.title
- Extract text in a column with .str.extract
- Identify whether a cell is empty with the .isnull method
6. Vlookup
- Find an element with .loc[ ]
- Merge two tables with pd.merge or pd.concat
7. Pivot Table
- Use the .pivot_table method
8. Replace Excel Graphs with Python’s Matplotlib or Seaborn
Bộ dữ liệu
Trong hướng dẫn này, chúng tôi sẽ sử dụng một tệp Excel có định dạng .csv, thường được sử dụng khi làm việc với các bộ dữ liệu. Bộ dữ liệu bao gồm các nhãn hiệu được bảo mật bởi các sinh viên trong các môn học khác nhau và sẽ giúp chúng tôi dễ dàng chuyển từ bảng tính Excel sang các khung dữ liệu Python. Bạn có thể tải xuống dữ liệu này trên Kaggle hoặc trên GitHub của tôi [kiểm tra thư mục bộ dữ liệu].
Để bắt đầu với hướng dẫn này, hãy để nhập các thư viện gấu trúc và numpy.
import pandas as pd
import numpy as np
Lưu ý: Nếu bạn không có các thư viện được cài đặt trong Python, bạn có thể dễ dàng cài đặt chúng bằng cách viết
df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
7 và df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
8on thiết bị đầu cuối hoặc dấu nhắc lệnh của bạn.Với điều này, chúng ta có thể xem xét dữ liệu đầu tiên. Để làm như vậy, chúng tôi sử dụng
df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
9. Đảm bảo rằng CSV và tập lệnh Python của bạn được đặt ở cùng một nơi [cùng một đường dẫn].df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
Khi chúng tôi đọc tệp CSV này, chúng tôi đặt tên cho nó. Trong trường hợp này, tôi đặt tên nó là
df_excel.describe[]
0. DF là viết tắt của DataFrame và nó có tên điển hình được đưa ra sau khi đọc tệp CSV. Sau khi chạy mã bên dưới, chúng tôi có được đầu ra sau.Hình ảnh của tác giảĐiều này trông tương tự như bảng tính Excel, nhưng ở định dạng này, nó sẽ dễ dàng hơn để gây ra dữ liệu. Bây giờ tôi sẽ chỉ cho bạn trong Python cách thực hiện một số chức năng phổ biến mà bạn có thể đã sử dụng trong Excel.
Tổng, trung bình, tối đa, tối thiểu, đếm
Các chức năng phổ biến của Excel có thể dễ dàng thay thế bằng các phương pháp gấu trúc. Hãy để một cái nhìn.
Các cột [ví dụ: tổng một cột]
Nếu chúng tôi muốn nhận được hầu hết các chức năng được liệt kê ở trên, chúng tôi sẽ sử dụng phương thức
df_excel.describe[]
1.df_excel.describe[]
Image bởi tác giảNhư bạn có thể thấy, với điều này, chúng tôi có được các giá trị, trung bình, tối đa và tối thiểu của tất cả các cột số.
Tuy nhiên, nếu chúng tôi muốn chọn một hàng cụ thể, trước tiên chúng tôi chọn với dấu ngoặc vuông
df_excel.describe[]
2and sau đó sử dụng phương thức chúng tôi cần [df_excel.describe[]
3, df_excel.describe[]
4, v.v.]. Ví dụ, hãy để tính toán trung bình của điểm số toán học.In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
Đây là một số phương pháp khác bạn có thể sử dụng.
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
Hàng [ví dụ: tổng một hàng]
Bây giờ, hãy để nói rằng chúng tôi muốn tính trung bình của 3 điểm [toán học, đọc và viết]. Các giá trị đó nằm trong các cột khác nhau, vì vậy chúng tôi có 2 tùy chọn. Chúng ta có thể tổng hợp từng cột
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
Hoặc sử dụng phương thức chúng tôi đã sử dụng trước đây để tổng hợp các giá trị trong một cột, nhưng trong trường hợp này, chúng tôi thêm
df_excel.describe[]
5df_excel['average'] = df_excel.mean[axis=1]
Chúng tôi cũng đã thêm một cột mới
df_excel.describe[]
6 khi tính trung bình. Chúng tôi sẽ sử dụng cột mới này cho phần tiếp theo [df_excel.describe[]
7].Hãy nhớ rằng trong ví dụ này, chúng tôi có thể sử dụng tùy chọn thứ hai vì các giá trị số duy nhất nằm trong các cột mong muốn [[toán học, đọc và ghi]. Nếu có một cột bổ sung mà chúng tôi không muốn xem xét trong tổng , chúng ta chỉ nên sử dụng tùy chọn đầu tiên.
Trong trường hợp chúng tôi muốn đếm số lượng dữ liệu cụ thể trong một cột, chúng tôi có thể sử dụng phương thức
df_excel.describe[]
8In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
NẾU
Chúng ta có thể dễ dàng thay thế Excel, nếu chức năng bằng cách sử dụng Numpy.
Thay thế nếu bằng NP. Ở đâu
Hãy để tưởng tượng chúng tôi muốn biết liệu một học sinh đã vượt qua hay thất bại trong một bài kiểm tra và tạo một cột mới với thông tin đó. Chúng ta có thể dễ dàng làm điều đó với mã sau.
df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
Như bạn có thể thấy
df_excel.describe[]
9 cần 3 đối số - điều kiện, giá trị nếu điều kiện là đúng và giá trị nếu điều kiện là sai.Thay thế lồng nhau nếu bằng np.select
Hãy để tưởng tượng chúng tôi muốn cho các lớp từ A đến F dựa trên điểm số thu được. Trong trường hợp này, chúng tôi có nhiều hơn 2 giá trị, vì vậy chúng tôi sử dụng
In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
0In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
1Needs to Đối số - Danh sách các điều kiện và danh sách các giá trị. Một danh sách trong Python được thể hiện bằng dấu ngoặc vuông In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
2import pandas as pd
import numpy as np
0Hãy nhớ rằng mỗi điều kiện nên nằm trong dấu ngoặc đơn. Bây giờ chúng tôi sử dụng phương thức In [1]: df_excel['math score'].mean[]
3 và gán nó cho cột
Out [1]: 66.089In [1]: df_excel['math score'].mean[]
4 mới.Now we use the
Out [1]: 66.089
In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
3 method and assign it to a new In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
4 column.import pandas as pd
import numpy as np
1Bây giờ 5 hàng đầu tiên đầu ra sẽ trông như thế này.
Hình ảnh của tác giảĐiều này trông tương tự như bảng tính Excel, nhưng ở định dạng này, nó sẽ dễ dàng hơn để gây ra dữ liệu. Bây giờ tôi sẽ chỉ cho bạn trong Python cách thực hiện một số chức năng phổ biến mà bạn có thể đã sử dụng trong Excel.
Tổng, trung bình, tối đa, tối thiểu, đếm
Các chức năng phổ biến của Excel có thể dễ dàng thay thế bằng các phương pháp gấu trúc. Hãy để một cái nhìn.
Một điều kiện [chọn một cột có dấu ngoặc vuông []]
Hãy để tưởng tượng chúng ta muốn tổng số điểm cho giới tính nữ. Để làm như vậy, trước tiên, chúng tôi viết điều kiện
In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
8and sau đó. Chúng tôi chọn điều kiện đó bên trong khung df_excel.describe[]
0 bằng cách sử dụng dấu ngoặc vuông In [1]: df_excel['math score'].mean[]
Out [1]: 66.089
2import pandas as pd
import numpy as np
2Chúng tôi chỉ chọn giới tính nữ và đặt nó vào một khung dữ liệu được gọi là
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
1. Bây giờ chúng tôi có thể thực hiện bất kỳ tính toán nào chúng tôi đã thấy trong phần Sum Sum, trung bình, tối đa, tối thiểu, đếm.Hai hoặc nhiều điều kiện [chọn cột và sử dụng & hoặc |]
Nếu chúng ta có hai hoặc nhiều điều kiện, mã sẽ trông giống với quy định trên, nhưng với một số thay đổi. Hãy tưởng tượng chúng tôi muốn tính điểm số của nữ trong nhóm B
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
2import pandas as pd
import numpy as np
3Vì có 2 điều kiện chúng tôi có thể sử dụng & | đại diện và/hoặc tương ứng. Hãy nhớ rằng mỗi điều kiện nên nằm trong dấu ngoặc đơn.Keep in mind that each condition should be within parenthesis.
Bây giờ hãy để tổng hợp các điểm số.
import pandas as pd
import numpy as np
4Trong trường hợp này, tôi đã sử dụng
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
3Method để chỉ cho bạn một cách khác để tạo một cột mới trong khi thực hiện các tính toán.Làm sạch dữ liệu cơ bản
Chúng tôi sẽ kiểm tra một vài phương pháp được sử dụng để làm sạch dữ liệu. Trong trường hợp bạn muốn biết tất cả các phương pháp được sử dụng để làm sạch dữ liệu, hãy kiểm tra hướng dẫn đầy đủ tôi đã viết về cách làm sạch và chuẩn bị dữ liệu trong Python.
Chúng tôi sẽ tiếp tục sử dụng khung
df_excel.describe[]
0 mà chúng tôi đã xác định trước đó.Thay đổi trường hợp văn bản với .Str.Lower, .str.upper hoặc .str.title
Để truy cập các chuỗi có trong một cột, chúng tôi sử dụng
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
5 thì chúng tôi có thể thay đổi trường hợp văn bản vớiimport pandas as pd
import numpy as np
5Để lưu các giá trị, chúng ta có thể ghi đè một cột như trong mã bên dưới.
import pandas as pd
import numpy as np
6Nhưng trong trường hợp này, chúng tôi sẽ để lại các giá trị như vậy.
Trích xuất văn bản trong một cột với .str.extract
Chúng ta có thể dễ dàng trích xuất văn bản từ một cột với
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
6. Thêm vào đó, nếu chúng ta muốn trích xuất các mẫu cụ thể của một văn bản, chúng ta có thể sử dụng các biểu thức thông thường.Hãy để chúng tôi tưởng tượng chúng tôi chỉ muốn trích xuất các từ trong trường hợp trên trong cột
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
7 [ví dụ: B B từ nhóm nhóm B B B]. Để làm như vậy, chúng tôi viết mã sau.import pandas as pd
import numpy as np
7Trong trường hợp này, chúng tôi đã sử dụng biểu thức thông thường
df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
8 ở đâu df_excel['math score'].mean[]
df_excel['math score'].max[]
df_excel['math score'].min[]
df_excel['math score'].count[]
9 chỉ ra các từ trong trường hợp trên, trong khi dấu ngoặc đơn df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
0is cần thiết để chọn mẫu mong muốn. Biểu thức thông thường có thể trông đáng sợ, nhưng chúng đơn giản hơn bạn nghĩ. Trong liên kết dưới đây, bạn sẽ tìm thấy một hướng dẫn đơn giản mà tôi đã thực hiện để dễ dàng tìm hiểu các biểu thức thông thường.Xác định xem một ô có trống với phương pháp .isnull
Để thay thế Excel, Counta, trong Python, chúng ta có thể sử dụng
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
1 để tìm các giá trị trống.import pandas as pd
import numpy as np
8Trong trường hợp này, không có giá trị trống nên kết quả sẽ là một khung dữ liệu trống.
Vlookup
Để tìm các yếu tố như Vlookup làm trong Excel, chúng tôi sẽ sử dụng
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
2, df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
3 hoặc df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
4 dựa trên vấn đề chúng tôi muốn giải quyết.Chỉ cho những ví dụ này, chúng tôi sẽ làm việc với 2 bảng tính Excel. Đầu tiên là cùng một sinh viên của người Viking, chúng tôi đã làm việc cho đến nay, trong khi tệp thứ hai là tệp CSV có tên là LanguLAGESCORE, mà tôi đã tạo với ngẫu nhiên
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 và df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
6Values [bạn có thể tìm thấy tệp này trên github của tôi]. Hãy cùng đọc cả hai tệp với df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
7As mà chúng tôi đã làm trước đây.values [you can find this file on my
Github]. Let’s read both files with df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
7as we did before.import pandas as pd
import numpy as np
9Bây giờ, chúng tôi sẽ tạo một cột
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 trên df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
9 vì vậy nó có một cột chung với df_excel['average'] = df_excel.mean[axis=1]
0. Để làm như vậy, chúng tôi chạy mã sau.df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
0Như bạn có thể thấy, tôi đã tạo một cột
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 dựa trên chỉ mục. df_excel['average'] = df_excel.mean[axis=1]
2gets thoát khỏi chỉ mục bằng cách thêm nó làm cột. Bạn có thể bỏ chỉ mục thực hiện df_excel['average'] = df_excel.mean[axis=1]
3But Trong trường hợp này, tôi sẽ đổi tên cột df_excel['average'] = df_excel.mean[axis=1]
4 mới này bằng cách sử dụng phương thức df_excel['average'] = df_excel.mean[axis=1]
5. Với điều này, chúng tôi có một cột df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 mới.Tìm một phần tử với .loc []
Tìm một phần tử sử dụng gấu trúc cũng dễ như viết
df_excel['average'] = df_excel.mean[axis=1]
7 bên trong df_excel['average'] = df_excel.mean[axis=1]
8 Chúng tôi phải bao gồm nhãn hàng và nhãn. Ler Ler tìm thấy thông tin liên quan đến hàng 100.df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
1Chúng tôi cũng có thể đặt điều kiện. Ví dụ: chúng tôi muốn có được điểm toán cho học sinh với
df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 bằng 100.df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
2Điều này có nghĩa là học sinh với
In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
0100 có điểm In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
1 trong toán học.Hợp nhất hai bảng với pd.merge hoặc pd.concat
Hãy để tưởng tượng bạn muốn thêm điểm ngôn ngữ của tất cả các sinh viên đã làm bài kiểm tra. Trong trường hợp này, chúng tôi sử dụng
In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
2. Điều này yêu cầu 2 bảng có 1 cột chung. Trong trường hợp này, cột này là cột df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5.df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
3Trên đây, bạn có thể thấy rằng một đối số khác là cần thiết
In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
4. Điều này cho biết cách hợp nhất được thực hiện. Trái và phải sẽ có ____85 và df_excel['average'] = df_excel.mean[axis=1]
0 làm tài liệu tham khảo cho kết quả cuối cùng, trong khi In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
7 sẽ chỉ cung cấp dữ liệu chung bên trong cột df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5.Bạn cũng có thể sử dụng
In [2]: df_excel['gender'].value_counts[]
Out [2]:
female 518
male 482
9 cho cùng mục đích, nhưng bạn phải đặt df_excel['average'] = [df_excel['math score'] + df_excel['reading score'] + df_excel['writing score']]/3
5 làm chỉ mục trước khi kết hợp các khung hình và bao gồm các khung làm danh sách [trong ngoặc df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
1]df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
4Tất cả các giá trị không phù hợp với nhau sẽ nhận được NAN, nhưng chúng tôi có thể thay thế nó bằng bất kỳ giá trị nào bằng cách sử dụng phương thức ____92.
Bàn xoay
Sử dụng phương thức .Pivot_Table
Phương pháp pivot_table pivot_table hoạt động tương tự như phương pháp bạn tìm thấy trong Excel.
Hãy để tưởng tượng chúng tôi muốn có được điểm toán và viết của tất cả các nhóm bên trong
df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
3Column.df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
5Đối số
df_excel['average'] = df_excel.mean[axis=1]
4 sẽ nhóm df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
5Column, trong khi đối số df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
6 sẽ lấy các giá trị số để hiển thị. Cuối cùng, các tính toán được thực hiện bởi df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
7. Trong trường hợp này, chúng tôi chọn giá trị trung bình .________ 98AS Một kết quả, chúng tôi có được bảng trục sau.Hình ảnh của tác giảThay thế đồ thị excel bằng python từ matplotlib hoặc seeborn
Python chứa các thư viện khác nhau để làm cho trực quan hóa tốt như những ưu đãi Excel.
Hãy để Lừa làm cho một Barplot đơn giản dựa trên kết quả của
df_excel['pass/fail'] = np.where[df_excel['average'] > 70, 'Pass', 'Fail']
9we được tạo ra ở trên. Đầu tiên, chúng tôi nhập import pandas as pd
import numpy as np
00 và sau đó chúng tôi sử dụng import pandas as pd
import numpy as np
01df_excel = pd.read_csv['StudentsPerformance.csv']
df_excel
6Đối số đầu tiên của
import pandas as pd
import numpy as np
02is nhãn và thứ hai là giá trị số. Sau đó, chúng tôi hiển thị kết quả với import pandas as pd
import numpy as np
03Hình ảnh của tác giảThay thế đồ thị excel bằng python từ matplotlib hoặc seeborn