豆瓣圖書數據采集與可視化分析(三)- 豆瓣圖書數據統計分析

文章目錄

  • 前言
  • 一、數據讀取與保存
    • 1. 讀取清洗后數據
    • 2. 保存數據到CSV文件
    • 3. 保存數據到MySQL數據庫
  • 二、不同分類統計分析
    • 1. 不同分類的圖書數量統計分析
    • 2. 不同分類的平均評分統計分析
    • 3. 不同分類的平均評價人數統計分析
    • 4. 不同分類的平均價格統計分析
    • 5. 分類綜合分析
  • 三、不同年份統計分析
    • 1. 不同年份出版的圖書數量統計分析
    • 2. 不同年份出版的圖書平均評分分析
    • 3. 不同年份出版的圖書平均評價人數分析
    • 4. 不同年份出版的圖書平均價格分析
    • 5. 年份綜合分析
  • 四、不同作者統計分析
    • 1. 不同作者的圖書數量統計分析
    • 2. 不同作者的平均評分分析
    • 3. 不同作者的平均評價人數分析
    • 4. 不同作者的平均價格分析
    • 5. 作者綜合分析
  • 五、不同出版社分析
    • 1. 不同出版社的圖書數量統計分析
    • 2. 不同出版社的平均評分分析
    • 3. 不同出版社的平均評價人數分析
    • 4. 不同出版社的平均價格分析
    • 5. 出版社綜合分析
  • 六、其他分析
    • 1. 圖書評分分布分析
    • 2. 圖書價格分布分析
    • 3. 譯者翻譯的圖書數量統計分析(前15)
    • 4. 評價人數多的圖書分析(前15)
    • 5. 評分最高的圖書分析(前15)
    • 6. 評價人數最多且評分高的圖書分析(前15)
  • 七、完整代碼


前言

本項目旨在通過對豆瓣圖書數據集的詳細分析,挖掘其中隱藏的規律和趨勢,為圖書出版行業、讀者以及相關研究人員提供有價值的參考。從數據讀取與保存這一基礎環節出發,構建了完善的數據處理流程,確保能夠高效地獲取和存儲清洗后的高質量數據,為后續分析筑牢根基。在數據分析階段,從多個維度展開深入探究。在不同分類統計分析中,詳細剖析了各類圖書在數量、平均評分、平均評價人數以及平均價格等方面的表現,有助于出版方精準把握市場需求,讀者快速定位感興趣的圖書類別。針對不同年份的統計分析,能夠清晰洞察圖書出版趨勢隨時間的演變,了解不同年份圖書在質量、受歡迎程度和價格上的變化規律。而對不同作者和出版社的分析,則為評估創作者和出版機構的影響力提供了量化依據。此外,其他分析板塊涵蓋了圖書評分分布、價格分布、熱門圖書篩選等多個視角,進一步豐富了對圖書市場的認知。


一、數據讀取與保存

1. 讀取清洗后數據

def load_data(csv_file_path):try:data = pd.read_csv(csv_file_path)return dataexcept FileNotFoundError:print("未找到指定的 CSV 文件,請檢查文件路徑和文件名。")except Exception as e:print(f"加載數據時出現錯誤: {e}")

清洗后的部分數據如下圖所示:

在這里插入圖片描述

2. 保存數據到CSV文件

def save_to_csv(data, csv_file_path):# 使用 pathlib 處理文件路徑path = Path(csv_file_path)# 檢查文件所在目錄是否存在,如果不存在則創建path.parent.mkdir(parents=True, exist_ok=True)data.to_csv(csv_file_path, index=False, encoding='utf-8-sig', mode='w', header=True)print(f'清洗后的數據已保存到 {csv_file_path} 文件')

3. 保存數據到MySQL數據庫

def save_to_mysql(data, table_name):engine = create_engine(f'mysql+mysqlconnector://root:zxcvbq@127.0.0.1:3306/douban')data.to_sql(table_name, con=engine, index=False, if_exists='replace')print(f'清洗后的數據已保存到 {table_name} 表')

二、不同分類統計分析

1. 不同分類的圖書數量統計分析

def category_count_analysis(data):# 統計每個分類的圖書數量category_counts = data['category_name'].value_counts()category_counts = category_counts.reset_index()category_counts.columns = ['category_name', 'count']save_to_csv(category_counts, './結果輸出層/數據分析結果數據/分類圖書數量統計分析.csv')save_to_mysql(category_counts, '分類圖書數量統計分析')

分析結果如下圖所示:

在這里插入圖片描述

2. 不同分類的平均評分統計分析

def category_rating_analysis(data):# 計算每個分類的平均評分category_ratings = data.groupby('category_name')['rating'].mean().round(1)category_ratings = category_ratings.reset_index()category_ratings.columns = ['category_name', 'avg_rating']save_to_csv(category_ratings, './結果輸出層/數據分析結果數據/每個分類的平均評分統計分析.csv')save_to_mysql(category_ratings, '每個分類的平均評分統計分析')

分析結果如下圖所示:

在這里插入圖片描述

3. 不同分類的平均評價人數統計分析

def category_rating_count_analysis(data):# 計算每個分類的平均評價人數category_rating_counts = data.groupby('category_name')['rating_count'].mean().round(0)category_rating_counts = category_rating_counts.reset_index()category_rating_counts.columns = ['category_name', 'avg_rating_count']save_to_csv(category_rating_counts, './結果輸出層/數據分析結果數據/每個分類的平均評價人數統計分析.csv')save_to_mysql(category_rating_counts, '每個分類的平均評價人數統計分析')

分析結果如下圖所示:

在這里插入圖片描述

4. 不同分類的平均價格統計分析

def category_price_analysis(data):# 計算每個分類的平均價格category_prices = data.groupby('category_name')['price'].mean().round(1)category_prices = category_prices.reset_index()category_prices.columns = ['category_name', 'avg_price']save_to_csv(category_prices, './結果輸出層/數據分析結果數據/每個分類的平均價格統計分析.csv')save_to_mysql(category_prices, '每個分類的平均價格統計分析')

分析結果如下圖所示:

在這里插入圖片描述

5. 分類綜合分析

def category_analysis(data):# 統計每個分類的圖書數量category_counts = data['category_name'].value_counts()category_counts = category_counts.reset_index()category_counts.columns = ['category_name', 'count']# 計算每個分類的平均評分category_ratings = data.groupby('category_name')['rating'].mean().round(1)category_ratings = category_ratings.reset_index()category_ratings.columns = ['category_name', 'avg_rating']# 計算每個分類的平均評價人數category_rating_counts = data.groupby('category_name')['rating_count'].mean().round(0)category_rating_counts = category_rating_counts.reset_index()category_rating_counts.columns = ['category_name', 'avg_rating_count']# 計算每個分類的平均價格category_prices = data.groupby('category_name')['price'].mean().round(1)category_prices = category_prices.reset_index()category_prices.columns = ['category_name', 'avg_price']# 合并四個結果merged_result = pd.merge(category_counts, category_ratings, on='category_name', how='outer')merged_result = pd.merge(merged_result, category_rating_counts, on='category_name', how='outer')merged_result = pd.merge(merged_result, category_prices, on='category_name', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/每種分類的圖書數量和平均評分和平均評價人數和平均價格統計分析.csv')save_to_mysql(merged_result, '每種分類的圖書數量和平均評分和平均評價人數和平均價格統計分析')

分析結果如下圖所示:

在這里插入圖片描述


三、不同年份統計分析

1. 不同年份出版的圖書數量統計分析

def year_count_analysis(data):# 統計每年出版的圖書數量year_counts = data['publish_year'].value_counts()year_counts = year_counts.reset_index()# 按照年份升序排序year_counts = year_counts.sort_values(by='publish_year')year_counts.columns = ['publish_year', 'count']save_to_csv(year_counts, './結果輸出層/數據分析結果數據/每年出版的圖書數量統計分析.csv')save_to_mysql(year_counts, '每年出版的圖書數量統計分析')

分析結果如下圖所示:

在這里插入圖片描述

2. 不同年份出版的圖書平均評分分析

def year_rating_analysis(data):year_ratings = data.groupby('publish_year')['rating'].mean().round(1)year_ratings = year_ratings.reset_index()year_ratings = year_ratings.sort_values(by='publish_year')year_ratings.columns = ['publish_year', 'avg_rating']save_to_csv(year_ratings, './結果輸出層/數據分析結果數據/每年出版的圖書平均評分分析.csv')save_to_mysql(year_ratings, '每年出版的圖書平均評分分析')

分析結果如下圖所示:

在這里插入圖片描述

3. 不同年份出版的圖書平均評價人數分析

def year_rating_count_analysis(data):year_rating_counts = data.groupby('publish_year')['rating_count'].mean().round(0)year_rating_counts = year_rating_counts.reset_index()year_rating_counts = year_rating_counts.sort_values(by='publish_year')year_rating_counts.columns = ['publish_year', 'avg_rating_count']save_to_csv(year_rating_counts, './結果輸出層/數據分析結果數據/每年出版圖書平均評價人數分析.csv')save_to_mysql(year_rating_counts, '每年出版圖書平均評價人數分析')

分析結果如下圖所示:

在這里插入圖片描述

4. 不同年份出版的圖書平均價格分析

def year_price_analysis(data):year_prices = data.groupby('publish_year')['price'].mean().round(1)year_prices = year_prices.reset_index()year_prices = year_prices.sort_values(by='publish_year')year_prices.columns = ['publish_year', 'avg_price']save_to_csv(year_prices, './結果輸出層/數據分析結果數據/每年出版圖書平均價格分析.csv')save_to_mysql(year_prices, '每年出版圖書平均價格分析')

分析結果如下圖所示:

在這里插入圖片描述

5. 年份綜合分析

def year_analysis(data):# 每年出版的圖書數量統計分析year_counts = data['publish_year'].value_counts()year_counts = year_counts.reset_index()year_counts = year_counts.sort_values(by='publish_year')year_counts.columns = ['publish_year', 'count']# 每年出版的圖書平均評分分析year_ratings = data.groupby('publish_year')['rating'].mean().round(1)year_ratings = year_ratings.reset_index()year_ratings = year_ratings.sort_values(by='publish_year')year_ratings.columns = ['publish_year', 'avg_rating']# 每年出版的圖書平均評價人數分析year_rating_counts = data.groupby('publish_year')['rating_count'].mean().round(0)year_rating_counts = year_rating_counts.reset_index()year_rating_counts = year_rating_counts.sort_values(by='publish_year')year_rating_counts.columns = ['publish_year', 'avg_rating_count']# 每年出版的圖書平均價格分析year_prices = data.groupby('publish_year')['price'].mean().round(1)year_prices = year_prices.reset_index()year_prices = year_prices.sort_values(by='publish_year')# 合并四個結果merged_result = pd.merge(year_counts, year_ratings, on='publish_year', how='outer')merged_result = pd.merge(merged_result, year_rating_counts, on='publish_year', how='outer')merged_result = pd.merge(merged_result, year_prices, on='publish_year', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/每年出版圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '每年出版圖書數量和平均評分和平均價格和平均評價人數分析')

分析結果如下圖所示:

在這里插入圖片描述


四、不同作者統計分析

1. 不同作者的圖書數量統計分析

def author_count_analysis(data):# 統計每個作者的圖書數量author_counts = data['author'].value_counts()author_counts = author_counts.reset_index()author_counts.columns = ['author', 'count']save_to_csv(author_counts, './結果輸出層/數據分析結果數據/作者圖書數量統計分析.csv')save_to_mysql(author_counts, '作者圖書數量統計分析')

分析結果如下圖所示:

在這里插入圖片描述

2. 不同作者的平均評分分析

def author_rating_analysis(data):# 計算每個作者的平均評分author_ratings = data.groupby('author')['rating'].mean().round(1)author_ratings = author_ratings.reset_index()author_ratings.columns = ['author', 'avg_rating']save_to_csv(author_ratings, './結果輸出層/數據分析結果數據/作者平均評分分析.csv')save_to_mysql(author_ratings, '作者平均評分分析')

分析結果如下圖所示:

在這里插入圖片描述

3. 不同作者的平均評價人數分析

def author_rating_count_analysis(data):# 計算每個作者的平均評價人數author_rating_counts = data.groupby('author')['rating_count'].mean().round(0)author_rating_counts = author_rating_counts.reset_index()author_rating_counts.columns = ['author', 'avg_rating_count']save_to_csv(author_rating_counts, './結果輸出層/數據分析結果數據/作者平均評價人數分析.csv')save_to_mysql(author_rating_counts, '作者平均評價人數分析')

分析結果如下圖所示:

4. 不同作者的平均價格分析

def author_price_analysis(data):# 計算每個作者的平均價格author_prices = data.groupby('author')['price'].mean().round(1)author_prices = author_prices.reset_index()author_prices.columns = ['author', 'avg_price']save_to_csv(author_prices, './結果輸出層/數據分析結果數據/作者平均價格分析.csv')save_to_mysql(author_prices, '作者平均價格分析')

分析結果如下圖所示:

在這里插入圖片描述

5. 作者綜合分析

def author_analysis(data):# 每個作者的圖書數量統計分析author_counts = data['author'].value_counts()author_counts = author_counts.reset_index()author_counts.columns = ['author', 'count']# 每個作者的平均評分分析author_ratings = data.groupby('author')['rating'].mean().round(1)author_ratings = author_ratings.reset_index()author_ratings.columns = ['author', 'avg_rating']# 每個作者的平均評價人數分析author_rating_counts = data.groupby('author')['rating_count'].mean().round(0)author_rating_counts = author_rating_counts.reset_index()author_rating_counts.columns = ['author', 'avg_rating_count']# 每個作者的平均價格分析author_prices = data.groupby('author')['price'].mean().round(1)author_prices = author_prices.reset_index()author_prices.columns = ['author', 'avg_price']# 合并四個結果merged_result = pd.merge(author_counts, author_ratings, on='author', how='outer')merged_result = pd.merge(merged_result, author_rating_counts, on='author', how='outer')merged_result = pd.merge(merged_result, author_prices, on='author', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/作者圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '作者圖書數量和平均評分和平均價格和平均評價人數分析')

分析結果如下圖所示:

在這里插入圖片描述


五、不同出版社分析

1. 不同出版社的圖書數量統計分析

def publish_count_analysis(data):# 統計每個出版社的圖書數量publish_counts = data['publisher'].value_counts()publish_counts = publish_counts.reset_index()publish_counts.columns = ['publisher', 'count']save_to_csv(publish_counts, './結果輸出層/數據分析結果數據/出版社圖書數量統計分析.csv')save_to_mysql(publish_counts, '出版社圖書數量統計分析')

分析結果如下圖所示:

在這里插入圖片描述

2. 不同出版社的平均評分分析

def publish_rating_analysis(data):# 計算每個出版社的平均評分publish_ratings = data.groupby('publisher')['rating'].mean().round(1)publish_ratings = publish_ratings.reset_index()publish_ratings.columns = ['publisher', 'avg_rating']save_to_csv(publish_ratings, './結果輸出層/數據分析結果數據/出版社平均評分分析.csv')save_to_mysql(publish_ratings, '出版社平均評分分析')

分析結果如下圖所示:

在這里插入圖片描述

3. 不同出版社的平均評價人數分析

def publish_rating_count_analysis(data):# 計算每個出版社的平均評價人數publish_rating_counts = data.groupby('publisher')['rating_count'].mean().round(0)publish_rating_counts = publish_rating_counts.reset_index()publish_rating_counts.columns = ['publisher', 'avg_rating_count']save_to_csv(publish_rating_counts, './結果輸出層/數據分析結果數據/出版社平均評價人數分析.csv')save_to_mysql(publish_rating_counts, '出版社平均評價人數分析')

分析結果如下圖所示:

在這里插入圖片描述

4. 不同出版社的平均價格分析

def publish_price_analysis(data):# 計算每個出版社的平均價格publish_prices = data.groupby('publisher')['price'].mean().round(1)publish_prices = publish_prices.reset_index()publish_prices.columns = ['publisher', 'avg_price']save_to_csv(publish_prices, './結果輸出層/數據分析結果數據/出版社平均價格分析.csv')save_to_mysql(publish_prices, '出版社平均價格分析')

分析結果如下圖所示:

在這里插入圖片描述

5. 出版社綜合分析

def publish_analysis(data):# 每個出版社的圖書數量統計分析publish_counts = data['publisher'].value_counts()publish_counts = publish_counts.reset_index()publish_counts.columns = ['publisher', 'count']# 每個出版社的平均評分分析publish_ratings = data.groupby('publisher')['rating'].mean().round(1)publish_ratings = publish_ratings.reset_index()publish_ratings.columns = ['publisher', 'avg_rating']# 每個出版社的平均評價人數分析publish_rating_counts = data.groupby('publisher')['rating_count'].mean().round(0)publish_rating_counts = publish_rating_counts.reset_index()publish_rating_counts.columns = ['publisher', 'avg_rating_count']# 每個出版社的平均價格分析publish_prices = data.groupby('publisher')['price'].mean().round(1)publish_prices = publish_prices.reset_index()publish_prices.columns = ['publisher', 'avg_price']# 合并四個結果merged_result = pd.merge(publish_counts, publish_ratings, on='publisher', how='outer')merged_result = pd.merge(merged_result, publish_rating_counts, on='publisher', how='outer')merged_result = pd.merge(merged_result, publish_prices, on='publisher', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/出版社圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '出版社圖書數量和平均評分和平均價格和平均評價人數分析')

分析結果如下圖所示:

在這里插入圖片描述


六、其他分析

1. 圖書評分分布分析

def rating_analysis(data):# 定義評分區間bins = [0, 2, 4, 6, 8, 10]labels = ['0-2', '2-4', '4-6', '6-8', '8-10']# 使用 pd.cut 函數將評分進行分組data['rating_group'] = pd.cut(data['rating'], bins=bins, labels=labels, right=False)# 統計每個評分區間的圖書數量rating_counts = data['rating_group'].value_counts()rating_counts = rating_counts.reset_index()rating_counts.columns = ['rating_range', 'count']save_to_csv(rating_counts, './結果輸出層/數據分析結果數據/評分分布統計分析.csv')save_to_mysql(rating_counts, '評分分布統計分析')

2. 圖書價格分布分析

def price_analysis(data):# 定義價格區間bins = [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500]labels = ['0-50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350', '350-400', '400-450', '450-500']# 使用 pd.cut 函數將價格進行分組data['price_group'] = pd.cut(data['price'], bins=bins, labels=labels, right=False)# 統計每個價格區間的圖書數量price_counts = data['price_group'].value_counts()price_counts = price_counts.reset_index()price_counts.columns = ['price_range', 'count']save_to_csv(price_counts, './結果輸出層/數據分析結果數據/圖書價格分布統計分析.csv')save_to_mysql(price_counts, '圖書價格分布統計分析')

3. 譯者翻譯的圖書數量統計分析(前15)

def translator_count_analysis(data):# 統計每個譯者的圖書數量translator_counts = data['translator'].value_counts()translator_counts = translator_counts.reset_index()translator_counts.columns = ['translator', 'count']translator_counts = translator_counts.sort_values(by='count', ascending=False)translator_counts = translator_counts.head(15)save_to_csv(translator_counts, './結果輸出層/數據分析結果數據/譯者圖書數量統計分析.csv')save_to_mysql(translator_counts, '譯者圖書數量統計分析')

4. 評價人數多的圖書分析(前15)

def high_rating_count_books_analysis(data):high_rating_count_books = data[['name', 'rating_count']]high_rating_count_books = high_rating_count_books.sort_values(by='rating_count', ascending=False)high_rating_count_books = high_rating_count_books.drop_duplicates(subset=['name'])high_rating_count_books = high_rating_count_books.head(15)save_to_csv(high_rating_count_books, './結果輸出層/數據分析結果數據/評價人數多的圖書分析.csv')save_to_mysql(high_rating_count_books, '評價人數多的圖書分析')

分析結果如下圖所示:

在這里插入圖片描述

5. 評分最高的圖書分析(前15)

def high_rating_books_analysis(data):high_rating_books = data[['name', 'rating']]high_rating_books = high_rating_books.sort_values(by='rating', ascending=False)high_rating_books = high_rating_books.drop_duplicates(subset=['name'])high_rating_books = high_rating_books.head(15)save_to_csv(high_rating_books, './結果輸出層/數據分析結果數據/評分最高的圖書分析.csv')save_to_mysql(high_rating_books, '評分最高的圖書分析')

分析結果如下圖所示:

在這里插入圖片描述

6. 評價人數最多且評分高的圖書分析(前15)

def high_rating_and_rating_count_books_analysis(data):high_rating_and_rating_count_books = data[['name', 'rating', 'rating_count']]high_rating_and_rating_count_books = high_rating_and_rating_count_books.sort_values(by=['rating_count', 'rating'], ascending=False)high_rating_and_rating_count_books = high_rating_and_rating_count_books.drop_duplicates(subset=['name'])high_rating_and_rating_count_books = high_rating_and_rating_count_books.head(15)save_to_csv(high_rating_and_rating_count_books, './結果輸出層/數據分析結果數據/評分高且評價人數最多的圖書分析.csv')save_to_mysql(high_rating_and_rating_count_books, '評分高且評價人數最多的圖書分析')

分析結果如下圖所示:

在這里插入圖片描述


七、完整代碼

from pathlib import Pathimport pandas as pd
from matplotlib import pyplot as plt
from sqlalchemy import create_engine# 設置支持中文的字體,這里以黑體為例
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False  # 解決負號'-'顯示為方塊的問題def load_data(csv_file_path):try:data = pd.read_csv(csv_file_path)return dataexcept FileNotFoundError:print("未找到指定的 CSV 文件,請檢查文件路徑和文件名。")except Exception as e:print(f"加載數據時出現錯誤: {e}")# 保存分析后的數據為csv文件
def save_to_csv(data, csv_file_path):# 使用 pathlib 處理文件路徑path = Path(csv_file_path)# 檢查文件所在目錄是否存在,如果不存在則創建path.parent.mkdir(parents=True, exist_ok=True)data.to_csv(csv_file_path, index=False, encoding='utf-8-sig', mode='w', header=True)print(f'清洗后的數據已保存到 {csv_file_path} 文件')# 保存分析后的數據到MySQL數據庫
def save_to_mysql(data, table_name):engine = create_engine(f'mysql+mysqlconnector://root:zxcvbq@127.0.0.1:3306/douban')data.to_sql(table_name, con=engine, index=False, if_exists='replace')print(f'清洗后的數據已保存到 {table_name} 表')# 每種分類圖書數量統計分析
def category_count_analysis(data):# 統計每個分類的圖書數量category_counts = data['category_name'].value_counts()category_counts = category_counts.reset_index()category_counts.columns = ['category_name', 'count']save_to_csv(category_counts, './結果輸出層/數據分析結果數據/分類圖書數量統計分析.csv')save_to_mysql(category_counts, '分類圖書數量統計分析')# 每種分類的平均評分統計分析
def category_rating_analysis(data):# 計算每個分類的平均評分category_ratings = data.groupby('category_name')['rating'].mean().round(1)category_ratings = category_ratings.reset_index()category_ratings.columns = ['category_name', 'avg_rating']save_to_csv(category_ratings, './結果輸出層/數據分析結果數據/每個分類的平均評分統計分析.csv')save_to_mysql(category_ratings, '每個分類的平均評分統計分析')# 每種分類的平均評價人數統計分析
def category_rating_count_analysis(data):# 計算每個分類的平均評價人數category_rating_counts = data.groupby('category_name')['rating_count'].mean().round(0)category_rating_counts = category_rating_counts.reset_index()category_rating_counts.columns = ['category_name', 'avg_rating_count']save_to_csv(category_rating_counts, './結果輸出層/數據分析結果數據/每個分類的平均評價人數統計分析.csv')save_to_mysql(category_rating_counts, '每個分類的平均評價人數統計分析')# 每種分類的平均價格統計分析
def category_price_analysis(data):# 計算每個分類的平均價格category_prices = data.groupby('category_name')['price'].mean().round(1)category_prices = category_prices.reset_index()category_prices.columns = ['category_name', 'avg_price']save_to_csv(category_prices, './結果輸出層/數據分析結果數據/每個分類的平均價格統計分析.csv')save_to_mysql(category_prices, '每個分類的平均價格統計分析')# 每種分類的圖書數量、平均評分、平均價格和平均評價人數統計分析
def category_analysis(data):# 統計每個分類的圖書數量category_counts = data['category_name'].value_counts()category_counts = category_counts.reset_index()category_counts.columns = ['category_name', 'count']# 計算每個分類的平均評分category_ratings = data.groupby('category_name')['rating'].mean().round(1)category_ratings = category_ratings.reset_index()category_ratings.columns = ['category_name', 'avg_rating']# 計算每個分類的平均評價人數category_rating_counts = data.groupby('category_name')['rating_count'].mean().round(0)category_rating_counts = category_rating_counts.reset_index()category_rating_counts.columns = ['category_name', 'avg_rating_count']# 計算每個分類的平均價格category_prices = data.groupby('category_name')['price'].mean().round(1)category_prices = category_prices.reset_index()category_prices.columns = ['category_name', 'avg_price']# 合并四個結果merged_result = pd.merge(category_counts, category_ratings, on='category_name', how='outer')merged_result = pd.merge(merged_result, category_rating_counts, on='category_name', how='outer')merged_result = pd.merge(merged_result, category_prices, on='category_name', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/每種分類的圖書數量和平均評分和平均評價人數和平均價格統計分析.csv')save_to_mysql(merged_result, '每種分類的圖書數量和平均評分和平均評價人數和平均價格統計分析')# 每年出版的圖書數量統計分析
def year_count_analysis(data):# 統計每年出版的圖書數量year_counts = data['publish_year'].value_counts()year_counts = year_counts.reset_index()# 按照年份升序排序year_counts = year_counts.sort_values(by='publish_year')year_counts.columns = ['publish_year', 'count']save_to_csv(year_counts, './結果輸出層/數據分析結果數據/每年出版的圖書數量統計分析.csv')save_to_mysql(year_counts, '每年出版的圖書數量統計分析')# 每年出版的圖書平均評分分析
def year_rating_analysis(data):year_ratings = data.groupby('publish_year')['rating'].mean().round(1)year_ratings = year_ratings.reset_index()year_ratings = year_ratings.sort_values(by='publish_year')year_ratings.columns = ['publish_year', 'avg_rating']save_to_csv(year_ratings, './結果輸出層/數據分析結果數據/每年出版的圖書平均評分分析.csv')save_to_mysql(year_ratings, '每年出版的圖書平均評分分析')# 每年出版圖書平均評價人數分析
def year_rating_count_analysis(data):year_rating_counts = data.groupby('publish_year')['rating_count'].mean().round(0)year_rating_counts = year_rating_counts.reset_index()year_rating_counts = year_rating_counts.sort_values(by='publish_year')year_rating_counts.columns = ['publish_year', 'avg_rating_count']save_to_csv(year_rating_counts, './結果輸出層/數據分析結果數據/每年出版圖書平均評價人數分析.csv')save_to_mysql(year_rating_counts, '每年出版圖書平均評價人數分析')# 每年出版圖書平均價格分析
def year_price_analysis(data):year_prices = data.groupby('publish_year')['price'].mean().round(1)year_prices = year_prices.reset_index()year_prices = year_prices.sort_values(by='publish_year')year_prices.columns = ['publish_year', 'avg_price']save_to_csv(year_prices, './結果輸出層/數據分析結果數據/每年出版圖書平均價格分析.csv')save_to_mysql(year_prices, '每年出版圖書平均價格分析')# 每年出版圖書數量、平均評分、平均價格和平均評價人數分析
def year_analysis(data):# 每年出版的圖書數量統計分析year_counts = data['publish_year'].value_counts()year_counts = year_counts.reset_index()year_counts = year_counts.sort_values(by='publish_year')year_counts.columns = ['publish_year', 'count']# 每年出版的圖書平均評分分析year_ratings = data.groupby('publish_year')['rating'].mean().round(1)year_ratings = year_ratings.reset_index()year_ratings = year_ratings.sort_values(by='publish_year')year_ratings.columns = ['publish_year', 'avg_rating']# 每年出版的圖書平均評價人數分析year_rating_counts = data.groupby('publish_year')['rating_count'].mean().round(0)year_rating_counts = year_rating_counts.reset_index()year_rating_counts = year_rating_counts.sort_values(by='publish_year')year_rating_counts.columns = ['publish_year', 'avg_rating_count']# 每年出版的圖書平均價格分析year_prices = data.groupby('publish_year')['price'].mean().round(1)year_prices = year_prices.reset_index()year_prices = year_prices.sort_values(by='publish_year')# 合并四個結果merged_result = pd.merge(year_counts, year_ratings, on='publish_year', how='outer')merged_result = pd.merge(merged_result, year_rating_counts, on='publish_year', how='outer')merged_result = pd.merge(merged_result, year_prices, on='publish_year', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/每年出版圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '每年出版圖書數量和平均評分和平均價格和平均評價人數分析')# 每個作者的圖書數量統計分析
def author_count_analysis(data):# 統計每個作者的圖書數量author_counts = data['author'].value_counts()author_counts = author_counts.reset_index()author_counts.columns = ['author', 'count']save_to_csv(author_counts, './結果輸出層/數據分析結果數據/作者圖書數量統計分析.csv')save_to_mysql(author_counts, '作者圖書數量統計分析')# 每個作者的平均評分分析
def author_rating_analysis(data):# 計算每個作者的平均評分author_ratings = data.groupby('author')['rating'].mean().round(1)author_ratings = author_ratings.reset_index()author_ratings.columns = ['author', 'avg_rating']save_to_csv(author_ratings, './結果輸出層/數據分析結果數據/作者平均評分分析.csv')save_to_mysql(author_ratings, '作者平均評分分析')# 每個作者的平均評價人數分析
def author_rating_count_analysis(data):# 計算每個作者的平均評價人數author_rating_counts = data.groupby('author')['rating_count'].mean().round(0)author_rating_counts = author_rating_counts.reset_index()author_rating_counts.columns = ['author', 'avg_rating_count']save_to_csv(author_rating_counts, './結果輸出層/數據分析結果數據/作者平均評價人數分析.csv')save_to_mysql(author_rating_counts, '作者平均評價人數分析')# 每個作者的平均價格分析
def author_price_analysis(data):# 計算每個作者的平均價格author_prices = data.groupby('author')['price'].mean().round(1)author_prices = author_prices.reset_index()author_prices.columns = ['author', 'avg_price']save_to_csv(author_prices, './結果輸出層/數據分析結果數據/作者平均價格分析.csv')save_to_mysql(author_prices, '作者平均價格分析')# 每個作者的圖書數量、平均評分、平均價格和平均評價人數分析
def author_analysis(data):# 每個作者的圖書數量統計分析author_counts = data['author'].value_counts()author_counts = author_counts.reset_index()author_counts.columns = ['author', 'count']# 每個作者的平均評分分析author_ratings = data.groupby('author')['rating'].mean().round(1)author_ratings = author_ratings.reset_index()author_ratings.columns = ['author', 'avg_rating']# 每個作者的平均評價人數分析author_rating_counts = data.groupby('author')['rating_count'].mean().round(0)author_rating_counts = author_rating_counts.reset_index()author_rating_counts.columns = ['author', 'avg_rating_count']# 每個作者的平均價格分析author_prices = data.groupby('author')['price'].mean().round(1)author_prices = author_prices.reset_index()author_prices.columns = ['author', 'avg_price']# 合并四個結果merged_result = pd.merge(author_counts, author_ratings, on='author', how='outer')merged_result = pd.merge(merged_result, author_rating_counts, on='author', how='outer')merged_result = pd.merge(merged_result, author_prices, on='author', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/作者圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '作者圖書數量和平均評分和平均價格和平均評價人數分析')# 每個出版社的圖書數量統計分析
def publish_count_analysis(data):# 統計每個出版社的圖書數量publish_counts = data['publisher'].value_counts()publish_counts = publish_counts.reset_index()publish_counts.columns = ['publisher', 'count']save_to_csv(publish_counts, './結果輸出層/數據分析結果數據/出版社圖書數量統計分析.csv')save_to_mysql(publish_counts, '出版社圖書數量統計分析')# 每個出版社的平均評分分析
def publish_rating_analysis(data):# 計算每個出版社的平均評分publish_ratings = data.groupby('publisher')['rating'].mean().round(1)publish_ratings = publish_ratings.reset_index()publish_ratings.columns = ['publisher', 'avg_rating']save_to_csv(publish_ratings, './結果輸出層/數據分析結果數據/出版社平均評分分析.csv')save_to_mysql(publish_ratings, '出版社平均評分分析')# 每個出版社的平均評價人數分析
def publish_rating_count_analysis(data):# 計算每個出版社的平均評價人數publish_rating_counts = data.groupby('publisher')['rating_count'].mean().round(0)publish_rating_counts = publish_rating_counts.reset_index()publish_rating_counts.columns = ['publisher', 'avg_rating_count']save_to_csv(publish_rating_counts, './結果輸出層/數據分析結果數據/出版社平均評價人數分析.csv')save_to_mysql(publish_rating_counts, '出版社平均評價人數分析')# 每個出版社的平均價格分析
def publish_price_analysis(data):# 計算每個出版社的平均價格publish_prices = data.groupby('publisher')['price'].mean().round(1)publish_prices = publish_prices.reset_index()publish_prices.columns = ['publisher', 'avg_price']save_to_csv(publish_prices, './結果輸出層/數據分析結果數據/出版社平均價格分析.csv')save_to_mysql(publish_prices, '出版社平均價格分析')# 每個出版社的圖書數量、平均評分、平均價格和平均評價人數分析
def publish_analysis(data):# 每個出版社的圖書數量統計分析publish_counts = data['publisher'].value_counts()publish_counts = publish_counts.reset_index()publish_counts.columns = ['publisher', 'count']# 每個出版社的平均評分分析publish_ratings = data.groupby('publisher')['rating'].mean().round(1)publish_ratings = publish_ratings.reset_index()publish_ratings.columns = ['publisher', 'avg_rating']# 每個出版社的平均評價人數分析publish_rating_counts = data.groupby('publisher')['rating_count'].mean().round(0)publish_rating_counts = publish_rating_counts.reset_index()publish_rating_counts.columns = ['publisher', 'avg_rating_count']# 每個出版社的平均價格分析publish_prices = data.groupby('publisher')['price'].mean().round(1)publish_prices = publish_prices.reset_index()publish_prices.columns = ['publisher', 'avg_price']# 合并四個結果merged_result = pd.merge(publish_counts, publish_ratings, on='publisher', how='outer')merged_result = pd.merge(merged_result, publish_rating_counts, on='publisher', how='outer')merged_result = pd.merge(merged_result, publish_prices, on='publisher', how='outer')# 保存合并后的結果到 CSV 文件save_to_csv(merged_result, './結果輸出層/數據分析結果數據/出版社圖書數量和平均評分和平均價格和平均評價人數分析.csv')save_to_mysql(merged_result, '出版社圖書數量和平均評分和平均價格和平均評價人數分析')# 評分分布分析
def rating_analysis(data):# 定義評分區間bins = [0, 2, 4, 6, 8, 10]labels = ['0-2', '2-4', '4-6', '6-8', '8-10']# 使用 pd.cut 函數將評分進行分組data['rating_group'] = pd.cut(data['rating'], bins=bins, labels=labels, right=False)# 統計每個評分區間的圖書數量rating_counts = data['rating_group'].value_counts()rating_counts = rating_counts.reset_index()rating_counts.columns = ['rating_range', 'count']save_to_csv(rating_counts, './結果輸出層/數據分析結果數據/評分分布統計分析.csv')save_to_mysql(rating_counts, '評分分布統計分析')# 圖書價格分布分析
def price_analysis(data):# 定義價格區間bins = [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500]labels = ['0-50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350', '350-400', '400-450', '450-500']# 使用 pd.cut 函數將價格進行分組data['price_group'] = pd.cut(data['price'], bins=bins, labels=labels, right=False)# 統計每個價格區間的圖書數量price_counts = data['price_group'].value_counts()price_counts = price_counts.reset_index()price_counts.columns = ['price_range', 'count']save_to_csv(price_counts, './結果輸出層/數據分析結果數據/圖書價格分布統計分析.csv')save_to_mysql(price_counts, '圖書價格分布統計分析')# 譯者翻譯的圖書數量統計分析(前15)
def translator_count_analysis(data):# 統計每個譯者的圖書數量translator_counts = data['translator'].value_counts()translator_counts = translator_counts.reset_index()translator_counts.columns = ['translator', 'count']translator_counts = translator_counts.sort_values(by='count', ascending=False)translator_counts = translator_counts.head(15)save_to_csv(translator_counts, './結果輸出層/數據分析結果數據/譯者圖書數量統計分析.csv')save_to_mysql(translator_counts, '譯者圖書數量統計分析')# 價格、評分、評分人數和出版年份相關性分析
def correlation_analysis(data):# 計算價格、評分、評分人數和出版年份之間的相關性correlation = data[['price', 'rating', 'rating_count', 'publish_year']].corr()correlation = correlation.reset_index()# 保存統計結果到 CSV 文件save_to_csv(correlation, './結果輸出層/數據分析結果數據/價格、評分、評分人數和出版年份相關性分析.csv')save_to_mysql(correlation, '價格、評分、評分人數和出版年份相關性分析')# 評價人數多的圖書分析(前15)
def high_rating_count_books_analysis(data):high_rating_count_books = data[['name', 'rating_count']]high_rating_count_books = high_rating_count_books.sort_values(by='rating_count', ascending=False)high_rating_count_books = high_rating_count_books.drop_duplicates(subset=['name'])high_rating_count_books = high_rating_count_books.head(15)save_to_csv(high_rating_count_books, './結果輸出層/數據分析結果數據/評價人數多的圖書分析.csv')save_to_mysql(high_rating_count_books, '評價人數多的圖書分析')# 評分最高的圖書分析(前15)
def high_rating_books_analysis(data):high_rating_books = data[['name', 'rating']]high_rating_books = high_rating_books.sort_values(by='rating', ascending=False)high_rating_books = high_rating_books.drop_duplicates(subset=['name'])high_rating_books = high_rating_books.head(15)save_to_csv(high_rating_books, './結果輸出層/數據分析結果數據/評分最高的圖書分析.csv')save_to_mysql(high_rating_books, '評分最高的圖書分析')# 評分高且評價人數最多的圖書(前15)
def high_rating_and_rating_count_books_analysis(data):high_rating_and_rating_count_books = data[['name', 'rating', 'rating_count']]high_rating_and_rating_count_books = high_rating_and_rating_count_books.sort_values(by=['rating_count', 'rating'], ascending=False)high_rating_and_rating_count_books = high_rating_and_rating_count_books.drop_duplicates(subset=['name'])high_rating_and_rating_count_books = high_rating_and_rating_count_books.head(15)save_to_csv(high_rating_and_rating_count_books, './結果輸出層/數據分析結果數據/評分高且評價人數最多的圖書分析.csv')save_to_mysql(high_rating_and_rating_count_books, '評分高且評價人數最多的圖書分析')if __name__ == '__main__':# 加載數據data = load_data('./中間處理層/清洗后的豆瓣圖書數據集.csv')category_count_analysis(data)category_rating_analysis(data)category_rating_count_analysis(data)category_price_analysis(data)category_analysis(data)year_count_analysis(data)year_rating_analysis(data)year_rating_count_analysis(data)year_price_analysis(data)year_analysis(data)author_count_analysis(data)author_rating_analysis(data)author_rating_count_analysis(data)author_price_analysis(data)author_analysis(data)publish_count_analysis(data)publish_rating_analysis(data)publish_rating_count_analysis(data)publish_price_analysis(data)publish_analysis(data)rating_analysis(data)price_analysis(data)translator_count_analysis(data)correlation_analysis(data)high_rating_count_books_analysis(data)high_rating_books_analysis(data)high_rating_and_rating_count_books_analysis(data)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80368.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡原理 - 3(UDP 協議)

目錄 協議 應用層 xml json protobuffer 傳輸層 端口號(Port) UDP 協議 UDP 協議端格式 完! 協議 網絡通信中,協議是一個非常重要的概念。我們前面在網絡原理中,就已經介紹了,為了統一各方網絡&…

Java Agent 注入 WebSocket 篇

Agent 如果要對其進行Agent注入的編寫,需要先理解三個名字premain,agentmain,Instrumentation premain方法在 JVM 啟動階段調用,一般維持權限的時候不會使用 agentmain方法在 JVM 運行時調用 常用的 Instrumentation實例為代理…

【深度強化學習 DRL 快速實踐】近端策略優化 (PPO)

PPO(2017,OpenAI)核心改進點 Proximal Policy Optimization (PPO):一種基于信賴域優化的強化學習算法,旨在克服傳統策略梯度方法在更新時不穩定的問題,采用簡單易實現的目標函數來保證學習過程的穩定性 解決…

筆試強訓:Day2

一、字符串中找出連續最長的數字串(雙指針) 字符串中找出連續最長的數字串_牛客題霸_牛客網 #include <iostream> #include <string> #include <cctype> using namespace std;int main() {//雙指針string str;cin>>str;int nstr.size();int begin-1,l…

MySQL 詳解之 InnoDB:核心特性深度剖析 (ACID, 事務, 鎖, 外鍵, 崩潰恢復)

在 MySQL 的世界里,存儲引擎是數據庫管理系統的核心組成部分,它負責數據的存儲和提取。MySQL 支持多種存儲引擎,如 MyISAM, Memory, CSV 等,但自 MySQL 5.5 版本以來,InnoDB 成為了默認的存儲引擎,也是絕大多數應用場景的首選。 為什么 InnoDB 如此重要并被廣泛采用?因…

Java中正則表達式使用方法

1. 正則表達式概述 正則表達式&#xff08;Regular Expression&#xff0c;簡稱 Regex&#xff09;是一種用于匹配字符串的模式工具。在 Java 中&#xff0c;正則表達式通過 java.util.regex 包實現&#xff0c;主要涉及以下兩個類&#xff1a; Pattern&#xff1a;表示一個編…

使用瀏覽器的Clipboard API實現前端復制copy功能

在前端開發中&#xff0c;復制文本到剪貼板的功能通常使用瀏覽器的 Clipboard API 實現。比如 navigator.clipboard.writeText 方法。以下是一個簡單的案例&#xff0c;展示如何使用 Clipboard API 實現復制文本的功能。 基本用法 首先&#xff0c;你需要創建一個按鈕&#x…

【因果推斷】(二)CV中的應用

文章目錄 因果表征學習因果圖 (Causal Diagram)“后門準則”&#xff08;backdoor criterion&#xff09;和“前門準則”&#xff08;frontdoor criterion&#xff09;后門調整Visual Commonsense R-CNNCausal Intervention for Weakly-Supervised Semantic SegmentationCausal…

【iOS】alloc init new底層原理

目錄 前言 alloc alloc核心操作 cls->instanceSize(extraBytes) calloc obj->initInstanceIsa init 類方法&#xff1a; 實例方法&#xff1a; new 前言 筆者最近在進行對OC語言源碼的學習&#xff0c;學習源碼的過程中經常會出現一些從來沒有遇見過的函數&…

QT窗口相關控件及其屬性

widget&#xff0c;PushButton&#xff0c;lineEdit等都是基于QWidget延展出來的 并不是完整的窗口&#xff0c;而是作為窗口的一部分 真正的窗口是QMainWindow 菜單欄 Qt中的菜單欄是通過QMenuBar這個類來實現的&#xff0c;一個主窗口最多只有一個菜單欄&#xff0c;位于主…

day47—雙指針-平方數之和(LeetCode-633)

題目描述 給定一個非負整數 c &#xff0c;你要判斷是否存在兩個整數 a 和 b&#xff0c;使得 a^2 b^2 c 。 示例 1&#xff1a; 輸入&#xff1a;c 5 輸出&#xff1a;true 解釋&#xff1a;1 * 1 2 * 2 5示例 2&#xff1a; 輸入&#xff1a;c 3 輸出&#xff1a;f…

藍橋杯 20. 壓縮變換

壓縮變換 原題目鏈接 題目描述 小明最近在研究壓縮算法。他知道&#xff0c;壓縮時如果能夠使數值很小&#xff0c;就能通過熵編碼得到較高的壓縮比。然而&#xff0c;要使數值變小是一個挑戰。 最近&#xff0c;小明需要壓縮一些正整數序列&#xff0c;這些序列的特點是&a…

element-ui多個form同時驗證,以及動態循環表單注意事項

多個form同時驗證&#xff1a; validateForm(refs) {if (!refs) {return false}return new Promise((resolve, reject) > {refs.validate().then((valid) > {resolve(valid)}).catch((val) > {resolve(false)})}) }, async handleConfirm() {Promise.all([this.valid…

Spring Boot中自定義404異常處理問題學習筆記

1. 問題背景 在Spring Boot項目中&#xff0c;需要手動返回404異常給前端。為此&#xff0c;我創建了一個自定義的404異常類UnauthorizedAccessException&#xff0c;并在全局異常處理器GlobalExceptionHandler中處理該異常。然而&#xff0c;在使用Postman測試時&#xff0c;…

你學會了些什么220622?--搭建UI自動化

jenkins訪問地址&#xff1a;http://192.168.82.129:8080/ 賬號密碼&#xff1a;admin/a123456a ***** 什么是UI自動化** 使用工具或者腳本對需要測試的軟件的前端界面在預設的條件下&#xff0c;在已有的測試數據下運行系統或者應用程序&#xff0c;并獲取其前端頁面UI顯示的…

【2025計算機網絡-面試常問】http和https區別是什么,http的內容有哪些,https用的是對稱加密還是非對稱加密,流程是怎么樣的

HTTP與HTTPS全面對比及HTTPS加密流程詳解 一、HTTP與HTTPS核心區別 特性HTTPHTTPS協議基礎明文傳輸HTTP SSL/TLS加密層默認端口80443加密方式無加密混合加密&#xff08;非對稱對稱&#xff09;證書要求不需要需要CA頒發的數字證書安全性易被竊聽、篡改、冒充防竊聽、防篡改…

JavaFX 第一篇 Hello World

1、簡介 JavaFX 是一個用于構建客戶端應用程序的 Java 庫&#xff0c;作為 Java 標準庫的一部分&#xff08;JDK 8 到 10&#xff09;&#xff0c;從 JDK 11 開始&#xff0c;JavaFX 將以獨立模塊發布&#xff0c;將不再包含在 JDK標準庫中&#xff0c;他是 Java 應用程序開發的…

SQL實戰:02之連續數問題求解

文章目錄 概述題目:體育館的人流量題解步驟一&#xff1a;構造出一個連續序列步驟二&#xff1a;找出符合條件的組的序號步驟三&#xff1a;fetch結果&#xff0c;使用內連接過濾出符合條件的記錄。完整SQL 題目二&#xff1a;連續出現的數字題解步驟一&#xff1a;分區并構建連…

STM32 的 GPIO和中斷

GPIO的簡單介紹 內部結構 施密特觸發器&#xff08;TTL肖特基觸發器&#xff09; 的工作原理&#xff1a; 施密特觸發電路&#xff08;簡稱&#xff09;是一種波形整形電路&#xff0c;當任何波形的信號進入電路時&#xff0c;輸出在正、負飽和之間跳動&#xff0c;產生方波或…

Server - 優雅的配置服務器 Bash 環境(.bashrc)

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/147335592 免責聲明&#xff1a;本文來源于個人知識與公開資料&#xff0c;僅用于學術交流&#xff0c;歡迎討論&#xff0c;不支持轉載。 登錄服…