<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基于pandas自動化的csv信息提取保存的腳本

      在數據處理中遇到大量CSV文件需要提取關鍵信息保存為新CSV文件,為減輕人力工作,查詢大量博客并結合AI編寫自動化腳本實現該功能。

      測試學習pandas模塊能力

       

      import pandas as pd
      from pathlib import Path
      import chardet
      import os
      
      input_file = '123/LURM.csv' #待處理文件
      
      #檢測文件編碼
      with open(input_file, 'rb') as f:
          raw_data = f.read(10000)  # 只讀取前10000字節進行檢測
          result = chardet.detect(raw_data)
          encoding = result['encoding']
          print(encoding)
      
      #導入文件
      df = pd.read_csv(input_file, encoding=encoding)
      #print(df)
      print(f"原始數據列名: {list(df.columns)}")
      
      #提取指定列
      columns_to_extract = ['vn', '報文類型', '采集時間', '上報時間', '車輛狀態', '采集時間', '定位有效性', '緯度類型', '經度類型', '經度', '緯度']
      extracted_df = df[columns_to_extract]
      print(extracted_df)
      
      #保存文件
      output_file = 'extracted_result.csv'
      #extracted_df.to_csv(output_file, index=False, encoding='utf-8-sig')
      extracted_df.to_csv(output_file, index=False, encoding=encoding)

      上面這段代碼實現單文件信息提取并保存。要實現CSV文件處理需要使用到pandas模塊,該模塊是大數據文件處理較為熱門模塊。有編程基礎的可以看注釋,基本可以理解,如果沒有建議使用AI工具指導。

       

      正式處理程序

       

      """ CSV文件提取保存程序
          代碼第一版時間20250911
      """
      
      import pandas as pd
      from pathlib import Path
      import chardet
      import os
      
      def detect_encoding(file_path):
          """檢測文件編碼"""
          try:
              with open(file_path, 'rb') as f:
                  raw_data = f.read(10000)  # 只讀取前10000字節進行檢測
                  result = chardet.detect(raw_data)
                  return result['encoding']
          except Exception as e:
              print(f"編碼檢測失敗: {e}")
              return None
      
      def read_csv_with_auto_encoding(file_path):
          """自動檢測編碼并讀取CSV文件"""
          # 常見的編碼嘗試順序
          encodings_to_try = ['utf-8', 'gbk', 'gb2312', 'gb18030', 'latin1', 'cp1252']
          
          # 首先嘗試自動檢測編碼
          detected_encoding = detect_encoding(file_path)
          if detected_encoding:
              encodings_to_try.insert(0, detected_encoding)
          
          for encoding in encodings_to_try:
              try:
                  df = pd.read_csv(file_path, encoding=encoding)
                  print(f"? 成功使用 {encoding} 編碼讀取文件")
                  return df, encoding
              except UnicodeDecodeError:
                  continue
              except Exception as e:
                  # 如果不是編碼問題,可能是其他錯誤
                  if 'codec' not in str(e).lower():
                      raise e
          
          # 如果所有編碼都失敗,嘗試使用錯誤處理
          try:
              df = pd.read_csv(file_path, encoding='utf-8', errors='ignore')
              print("? 使用utf-8編碼并忽略錯誤字符讀取文件")
              return df, 'utf-8-with-errors-ignored'
          except Exception as e:
              raise Exception(f"所有編碼嘗試都失敗: {e}")
      def save_dataframe_to_csv(extracted_df, file_name, encoding_used, output_folder="output"):
          """
          保存提取后的DataFrame到CSV文件
          
          參數:
              extracted_df (pd.DataFrame): 要保存的數據框
              file_name (str): 原始文件名(不含擴展名)
              encoding_used (str): 使用的編碼格式
              output_folder (str): 輸出文件夾名,默認為"output"
          
          返回:
              bool: 保存成功返回True,失敗返回False
          """
          try:
              # 創建輸出文件夾(如果不存在)
              output_path = Path(output_folder)
              output_path.mkdir(exist_ok=True)
              
              # 構建輸出文件名:原文件名 + "o" + .csv
              output_file = output_path / f"{file_name}_o.csv"
              
              # 檢查文件是否已存在
              if output_file.exists():
                  raise FileExistsError(f"文件已存在: {output_file}")
              
              # 保存為CSV文件
              extracted_df.to_csv(output_file, index=False, encoding=encoding_used)
              
              print(f"? 數據已成功保存到: {output_file}")
              print(f"  使用編碼: {encoding_used}")
              print(f"  數據形狀: {extracted_df.shape[0]} 行, {extracted_df.shape[1]} 列")
              
              return True
              
          except FileExistsError as e:
              print(f"??  文件已存在錯誤: {e}")
              return False
          except Exception as e:
              print(f"? 保存文件失敗: {e}")
              return False
          
      def read_all_csv_files(folder_path):
          """
          讀取指定文件夾下的所有CSV文件(支持自動編碼檢測)
          """
          if not os.path.exists(folder_path):
              print(f"錯誤: 文件夾 '{folder_path}' 不存在")
              return {}
          
          csv_files = list(Path(folder_path).glob("*.csv"))
          
          if len(csv_files) == 0:
              print(f"警告: 在 '{folder_path}' 中沒有找到CSV文件")
              return {}
          
          dataframes = {}
          
          print(f"找到 {len(csv_files)} 個CSV文件:")
          print("-" * 50)
          
          for csv_file in csv_files:
              try:
                  print(f"\n正在處理: {csv_file.name}")
                  df, encoding_used = read_csv_with_auto_encoding(csv_file)
      
                  print(f"? 成功讀取: {csv_file.name}")
                  print(f"  編碼: {encoding_used}")
                  print(f"  數據形狀: {df.shape[0]} 行, {df.shape[1]} 列")
      
                  print("-" * 50)
                  print(f"原始數據列名: {list(df.columns)}")
                  columns_to_extract = ['vn', '報文類型', '采集時間', '上報時間', '車輛狀態', '采集時間', '定位有效性', '緯度類型', '經度類型', '經度', '緯度']
                  extracted_df = df[columns_to_extract]
                  #print(extracted_df)
                  
      
                  # 使用文件名(不含路徑和擴展名)作為鍵
                  file_name = csv_file.stem
                  dataframes[file_name] = df
      
                  #保存提取后信息到文件
                  save_success = save_dataframe_to_csv(extracted_df, file_name, encoding_used)
                  if save_success:
                      print("? 提取的數據已成功保存")
                  else:
                      print("??  提取的數據保存失敗")
                  
              except Exception as e:
                  print(f"? 無法讀取 {csv_file.name}: {str(e)}")
          
          return dataframes
      
      
      
      
      # 主程序
      if __name__ == "__main__":
          
          # 設置你的文件夾路徑
          folder_path = "C:/Users/Downloads/LURM"
          
          # 讀取所有CSV文件
          all_data = read_all_csv_files(folder_path)
          
          print(f"\n{'='*50}")
          print(f"總結: 成功讀取了 {len(all_data)} 個CSV文件")
          
          # 顯示每個文件的基本信息
          # for name, df in all_data.items():
          #     print(f"\n{name}:")
          #     print(f"  形狀: {df.shape}")
          #     if len(df.columns) > 0:
          #         print(f"  列名: {list(df.columns)[:5]}{'...' if len(df.columns) > 5 else ''}")
          #     if len(df) > 0:
          #         print(f"  數據預覽:")
          #         print(df.head(2))

      正式程序的核心代碼和測試程序一樣,只不過添加大量錯誤檢測和現實文件信息提取的代碼(該段代碼已注釋)。

      代碼寫的比較爛,勿噴,有問題請回復指出。

       

      posted @ 2025-09-15 20:08  JianYuBlog  閱讀(19)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 丰满爆乳一区二区三区| 成人av一区二区亚洲精| 精品国产丝袜自在线拍国语| 亚洲a人片在线观看网址| 欧洲精品免费一区二区三区| 老师破女学生处特级毛ooo片| 国产精品亚洲综合色区丝瓜 | 在线高清免费不卡全码| 日本肥老妇色xxxxx日本老妇| 久久久久无码中| 美腿丝袜亚洲综合在线视频| 精品夜恋影院亚洲欧洲| 丰满少妇被猛烈进出69影院| 91精品国产蜜臀在线观看| 亚洲无av中文字幕在线| 乱中年女人伦av三区| 精品国产熟女一区二区三区| 色综合色综合色综合久久| 日夜啪啪一区二区三区| 国产AV影片麻豆精品传媒| 日韩一区二区三区一级片| 日日噜噜夜夜狠狠视频| 亚洲一区二区| 国产成人精品日本亚洲专区6| 中文无码av一区二区三区| 无码抽搐高潮喷水流白浆| 国99久9在线 | 免费| 99久久激情国产精品| 婷婷久久香蕉五月综合加勒比| 看亚洲黄色不在线网占| 日本公与熄乱理在线播放| 不卡一区二区国产在线| 人妻激情一区二区三区四区 | 国产精品一码二码三码| 国产久9视频这里只有精品| 望都县| 黑人玩弄人妻中文在线| 欧美丰满熟妇hdxx| 深夜放纵内射少妇| 国产福利片无码区在线观看| 国产大片黄在线观看|