Python từ phổ biến nhất trong dataframe

Tập lệnh Python đơn giản mà không cần sử dụng các thư viện xử lý văn bản nặng để trích xuất các từ phổ biến nhất từ ​​kho văn bản

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
clean_text_wo_single_char = pk.load[open["clean_text_wo_single_char.pkl",'rb']]
clean_text_wo_single_char

3 Định nghĩa các chức năng cần thiết

Tất cả các chức năng được tóm tắt ở đây. Tôi sẽ chỉ lại nơi chúng được sử dụng trong bài đăng này nếu chúng mới và chưa được giải thích

def token_and_unique_word_count_func[text]:
    '''
    Outputs the number of words and unique words
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to count unique words
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Prints:
        Number of existing tokens and number of unique words
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    print['Number of tokens: ' + str[len[words]]] 
    print['Number of unique words: ' + str[len[fdist]]]
def most_common_word_func[text, n_words=25]:
    '''
    Returns a DataFrame with the most commonly used words from a text with their frequencies
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to determine the word frequency
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Returns:
        A DataFrame with the most commonly occurring words [by default = 25] with their frequencies
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    n_words = n_words
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].head[n_words]
    
    return df_fdist
def least_common_word_func[text, n_words=25]:
    '''
    Returns a DataFrame with the least commonly used words from a text with their frequencies
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to determine the word frequency
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Returns:
        A DataFrame with the least commonly occurring words [by default = 25] with their frequencies
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    n_words = n_words
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].tail[n_words]
    
    return df_fdist

4 Tiền xử lý văn bản

4. 1 [Làm sạch văn bản]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Làm sạch văn bản

4. 2 [Token hóa]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản II-Tokenization

4. 3 [Dừng từ]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản II-Dừng từ

4. 4 [lạc đề. POS và NER]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản III-POS và NER

4. 5 [Chuẩn hóa]

Tôi đã mô tả phần này trong một bài viết trước đó. Xem tại đây. Tiền xử lý văn bản III-Chuẩn hóa

4. 6 [Xóa các ký tự đơn]

Tôi đã mô tả phần này trong bài viết trước. Xem tại đây. Tiền xử lý văn bản IV-Xóa các ký tự đơn

4. 7 Khám phá văn bản

4. 7. 1 Thống kê mô tả

Để dễ đọc hơn, tôi đã thêm dấu câu vào câu ví dụ sau. Tại thời điểm này trong quá trình tiền xử lý văn bản, những từ này sẽ không còn xuất hiện nữa, cũng như sẽ dừng các từ hoặc các từ khác có ít hoặc không có nội dung thông tin

Nhưng điều đó không quan trọng. Bạn có thể sử dụng phân tích này ở những nơi khác nhau, bạn chỉ cần ghi nhớ văn bản của mình rõ ràng như thế nào và liệu các dấu chấm câu hoặc tương tự có được tính hay không

text_for_exploration = \
"To begin to toboggan first buy a toboggan, but do not buy too big a toboggan. \
Too big a toboggan is too big a toboggan to buy to begin to toboggan."
text_for_exploration

def token_and_unique_word_count_func[text]:
    '''
    Outputs the number of words and unique words
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to count unique words
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Prints:
        Number of existing tokens and number of unique words
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    print['Number of tokens: ' + str[len[words]]] 
    print['Number of unique words: ' + str[len[fdist]]]
pd.set_option['display.max_colwidth', 30]
0

4. 7. 1. 1 Những từ phổ biến nhất

def most_common_word_func[text, n_words=25]:
    '''
    Returns a DataFrame with the most commonly used words from a text with their frequencies
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to determine the word frequency
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Returns:
        A DataFrame with the most commonly occurring words [by default = 25] with their frequencies
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    n_words = n_words
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].head[n_words]
    
    return df_fdist
pd.set_option['display.max_colwidth', 30]
2

pd.set_option['display.max_colwidth', 30]
3

4. 7. 1. 2 từ ít phổ biến nhất

def least_common_word_func[text, n_words=25]:
    '''
    Returns a DataFrame with the least commonly used words from a text with their frequencies
    
    Step 1: Use word_tokenize[] to get tokens from string
    Step 2: Uses the FreqDist function to determine the word frequency
    
    Args:
        text [str]: String to which the functions are to be applied, string
    
    Returns:
        A DataFrame with the least commonly occurring words [by default = 25] with their frequencies
    ''' 
    words = word_tokenize[text]
    fdist = FreqDist[words] 
    
    n_words = n_words
    
    df_fdist = pd.DataFrame[{'Word': fdist.keys[],
                             'Frequency': fdist.values[]}]
    df_fdist = df_fdist.sort_values[by='Frequency', ascending=False].tail[n_words]
    
    return df_fdist
pd.set_option['display.max_colwidth', 30]
5

4. 7. 2 Trực quan hóa văn bản

Ghi chú. Tôi chỉ áp dụng hình dung một lần cho những từ phổ biến nhất hiện tại

4. 7. 2. 1 qua Biểu đồ thanh

pd.set_option['display.max_colwidth', 30]
6

4. 7. 2. 2 qua Word Clouds

Với chức năng WordCloud, bạn cũng có thể hiển thị các từ xuất hiện thường xuyên nhất một cách trực quan. Ưu điểm là theo mặc định, tất cả các từ dừng hoặc các ký tự không liên quan đều bị xóa khỏi màn hình. Các thông số vẫn có thể được thiết lập có thể được đọc ở đây

pd.set_option['display.max_colwidth', 30]
7

4. 7. 3 Ứng dụng cho chuỗi ví dụ

pd.set_option['display.max_colwidth', 30]
8

pd.set_option['display.max_colwidth', 30]
9

4. 7. 3. 1 Những từ phổ biến nhất

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
0

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
1

4. 7. 3. 2 từ ít phổ biến nhất

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
2

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
3

4. 7. 4 Ứng dụng cho DataFrame

4. 7. 4. 1 cho toàn bộ DF

Như đã đề cập ở cuối chương trước [Xóa các ký tự đơn], tôi sẽ tiếp tục làm việc với cột ‘Reviews_cleaned_wo_single_char’. Ở đây chúng tôi chỉ xóa các ký tự có độ dài 1 khỏi văn bản

Để tôi có thể áp dụng các chức năng được viết cho chương này, trước tiên tôi cần tạo một kho văn bản gồm tất cả các hàng từ cột ‘Reviews_cleaned_wo_single_char’

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
4

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
5

4. 7. 4. 1. 1 Những từ phổ biến nhất

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
6

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
7

Như chúng ta có thể thấy, từ 'điện thoại' cho đến nay là từ phổ biến nhất

Tuy nhiên, cách tiếp cận này rất phiến diện nếu người ta cho rằng các nhận xét đề cập đến các xếp hạng khác nhau. Vì vậy, hãy xem xét kỹ hơn về chúng trong bước tiếp theo

4. 7. 4. 1. 2 từ ít phổ biến nhất

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
8

df = pd.read_csv['Amazon_Unlocked_Mobile_small_Part_IV.csv']
df.head[3].T
9

4. 7. 4. 2 chia cho Đánh giá

Như chúng ta có thể thấy từ đầu ra bên dưới, người dùng được cung cấp tùy chọn đưa ra 5 xếp hạng khác nhau. 1 là viết tắt của đánh giá kém và 5 cho đánh giá rất tốt

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
0

Để phân tích sâu hơn, tôi sẽ gán các nhãn tương ứng cho các xếp hạng khác nhau

  • Xếp hạng 1-2. phủ định
  • Xếp hạng 3. Trung tính
  • Xếp hạng 4-5. tích cực

Tôi có thể làm điều này bằng chức năng sau

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
1

Cá nhân tôi thích có các cột 'Xếp hạng' và 'Nhãn' cùng nhau. Cho đến nay, cột 'Nhãn' nằm ở cuối bản ghi vì nó mới được tạo. Tuy nhiên, thứ tự có thể được thay đổi bằng lệnh sau

Chỉ thực hiện sắp xếp lại cột này một lần, nếu không, ngày càng nhiều cột sẽ được đặt ở vị trí đầu tiên

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
2

Như bạn có thể thấy từ đầu ra một phần được hiển thị bên dưới, các nhãn đã được gán chính xác

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
3

Bây giờ tôi chia tập dữ liệu theo nhãn của chúng ['tích cực', 'trung lập' và 'tiêu cực']

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
4

Theo cách phân chia, tôi tạo một ngữ liệu văn bản riêng cho từng

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
5

Sau đó, tôi có thể sử dụng lại hàm most_common_word và lưu kết quả vào một tập dữ liệu riêng

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
6

Bây giờ tôi có thể sử dụng vòng lặp for để hiển thị trực quan 25 từ xuất hiện thường xuyên nhất trong mỗi bộ dữ liệu một phần

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
7

Ghi chú. Tôi bỏ qua cách thực hiện tương tự cho các từ ít phổ biến nhất vào thời điểm này. Nó sẽ tuân theo nguyên tắc giống như tôi đã chỉ ra trước đây

5. Kết luận

Trong bài đăng này, tôi đã chỉ cho bạn cách khám phá và trực quan hóa các khối văn bản một cách dễ dàng và nhanh chóng. Dựa trên những hiểu biết này, các bước tiếp theo của chúng tôi sẽ xuất hiện, mà tôi sẽ trình bày trong bài viết sau

Ở đây chúng tôi chỉ cần lưu DataFrame, vì chúng tôi đã thực hiện các thay đổi. Đây không phải là trường hợp với Chuỗi ví dụ

df['Reviews_cleaned_wo_single_char'] = df['Reviews_cleaned_wo_single_char'].astype[str]
8

Hơn nữa, chúng tôi đã tạo một số bảng tần số mà chúng tôi sẽ cần lại trong bài viết sau. Vì vậy, họ cũng sẽ được cứu

Từ điển hay DataFrame nào nhanh hơn?

Đối với một số mục đích nhỏ, được nhắm mục tiêu nhất định, lệnh có thể nhanh hơn . Và nếu đó là tất cả những gì bạn cần, thì chắc chắn hãy sử dụng một lệnh chính tả. Nhưng nếu bạn cần/muốn sức mạnh và sự sang trọng của DataFrame, thì dict không thể thay thế. So sánh tốc độ là vô nghĩa nếu cấu trúc dữ liệu trước tiên không đáp ứng nhu cầu của bạn.

DataFrame hoặc danh sách nào nhanh hơn?

Từ phần trên, chúng ta có thể thấy rằng để tổng kết, việc triển khai DataFrame chỉ nhanh hơn một chút so với việc triển khai Danh sách . Sự khác biệt này rõ ràng hơn nhiều đối với hàm Haversine phức tạp hơn, trong đó việc triển khai DataFrame nhanh hơn khoảng 10 lần so với việc triển khai Danh sách.

Tại và LỘC có giống nhau trong Pandas không?

at là một phần tử duy nhất và sử dụng. loc có thể là Sê-ri hoặc Khung dữ liệu . Trả về một giá trị không phải lúc nào cũng vậy. Nó trả về mảng giá trị nếu chỉ mục được cung cấp được sử dụng nhiều lần.

Điều gì tốt hơn Pandas DataFrame?

Do thực thi song song trên tất cả các lõi trên nhiều máy, PySpark chạy các hoạt động nhanh hơn Pandas , do đó chúng tôi thường phải chuyển đổi Pandas DataFrame thành . Đây là một trong những điểm khác biệt chính giữa Pandas và PySpark DataFrame.

Chủ Đề