好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > VBA處理數據與Python Pandas處理數據案例比較分析

VBA處理數據與Python Pandas處理數據案例比較分析

熱門標簽:浦東上海400開頭的電話申請 武漢呼叫中心外呼系統線路商 真人語音電銷機器人系統 北京語音電銷機器人價格 開封百應電銷機器人聯系方式 邯鄲外呼調研線路 電話機器人電話卡封號怎么辦 買了外呼系統不想用了怎么辦 樂昌電話機器人

需求:

現有一個 csv文件,包含'CNUM'和'COMPANY'兩列,數據里包含空行,且有內容重復的行數據。

要求:

1)去掉空行;
2)重復行數據只保留一行有效數據;
3)修改'COMPANY'列的名稱為'Company_New‘;
4)并在其后增加六列,分別為'C_col',‘D_col',‘E_col',‘F_col',‘G_col',‘H_col'。

一,使用 Python Pandas來處理

import pandas as pd
import numpy as np
from pandas import DataFrame,Series

def deal_with_data(filepath,newpath):
  file_obj=open(filepath)
  df=pd.read_csv(file_obj)  # 讀取csv文件,創建 DataFrame
  df=df.reindex(columns=['CNUM','COMPANY','C_col','D_col','E_col','F_col','G_col','H_col'],fill_value=None)  # 重新指定列索引
  df.rename(columns={'COMPANY':'Company_New'}, inplace = True) # 修改列名
  df=df.dropna(axis=0,how='all')         # 去除 NAN 即文件中的空行
  df['CNUM'] = df['CNUM'].astype('int32')    # 將 CNUM 列的數據類型指定為 int32
  df = df.drop_duplicates(subset=['CNUM', 'Company_New'], keep='first') # 去除重復行
  df.to_csv(newpath,index=False,encoding='GBK')
  file_obj.close()
  
if __name__=='__main__':
  file_path=r'C:\Users\12078\Desktop\python\CNUM_COMPANY.csv'
  file_save_path=r'C:\Users\12078\Desktop\python\CNUM_COMPANY_OUTPUT.csv'
  deal_with_data(file_path,file_save_path)

二,使用 VBA來處理:

Option Base 1
Option Explicit

Sub main()
 On Error GoTo error_handling
 Dim wb         As Workbook
 Dim wb_out       As Workbook
 Dim sht         As Worksheet
 Dim sht_out       As Worksheet
 Dim rng         As Range
 Dim usedrows      As Byte
 Dim usedrows_out    As Byte
 Dim dict_cnum_company  As Object
 Dim str_file_path    As String
    Dim str_new_file_path  As String
    'assign values to variables:
    str_file_path = "C:\Users\12078\Desktop\Python\CNUM_COMPANY.csv"
    str_new_file_path = "C:\Users\12078\Desktop\Python\CNUM_COMPANY_OUTPUT.csv"
 
 Set wb = checkAndAttachWorkbook(str_file_path)
 Set sht = wb.Worksheets("CNUM_COMPANY")
 Set wb_out = Workbooks.Add
 wb_out.SaveAs str_new_file_path, xlCSV 'create a csv file
 Set sht_out = wb_out.Worksheets("CNUM_COMPANY_OUTPUT")

 Set dict_cnum_company = CreateObject("Scripting.Dictionary")
 usedrows = WorksheetFunction.Max(getLastValidRow(sht, "A"), getLastValidRow(sht, "B"))

 'rename the header 'COMPANY' to 'Company_New',remove blank  duplicate lines/rows.
 Dim cnum_company As String
 cnum_company = ""
 For Each rng In sht.Range("A1", "A"  usedrows)
   If VBA.Trim(rng.Offset(0, 1).Value) = "COMPANY" Then
     rng.Offset(0, 1).Value = "Company_New"
   End If
   cnum_company = rng.Value  "-"  rng.Offset(0, 1).Value
   If VBA.Trim(cnum_company) > "-" And Not dict_cnum_company.Exists(rng.Value  "-"  rng.Offset(0, 1).Value) Then
     dict_cnum_company.Add rng.Value  "-"  rng.Offset(0, 1).Value, ""
   End If
 Next rng
 
 'loop the keys of dict split the keyes by '-' into cnum array and company array.
 Dim index_dict As Byte
 Dim arr_cnum()
 Dim arr_Company()
 For index_dict = 0 To UBound(dict_cnum_company.keys)
   ReDim Preserve arr_cnum(1 To UBound(dict_cnum_company.keys) + 1)
   ReDim Preserve arr_Company(1 To UBound(dict_cnum_company.keys) + 1)
   arr_cnum(index_dict + 1) = Split(dict_cnum_company.keys()(index_dict), "-")(0)
   arr_Company(index_dict + 1) = Split(dict_cnum_company.keys()(index_dict), "-")(1)
   Debug.Print index_dict
 Next

 'assigns the value of the arrays to the celles.
 sht_out.Range("A1", "A"  UBound(arr_cnum)) = Application.WorksheetFunction.Transpose(arr_cnum)
 sht_out.Range("B1", "B"  UBound(arr_Company)) = Application.WorksheetFunction.Transpose(arr_Company)

 'add 6 columns to output csv file:
 Dim arr_columns() As Variant
 arr_columns = Array("C_col", "D_col", "E_col", "F_col", "G_col", "H_col")  '
 sht_out.Range("C1:H1") = arr_columns
 Call checkAndCloseWorkbook(str_file_path, False)
 Call checkAndCloseWorkbook(str_new_file_path, True)

Exit Sub
error_handling:
  Call checkAndCloseWorkbook(str_file_path, False)
  Call checkAndCloseWorkbook(str_new_file_path, False)
End Sub

' 輔助函數:
'Get last row of Column N in a Worksheet
Function getLastValidRow(in_ws As Worksheet, in_col As String)
  getLastValidRow = in_ws.Cells(in_ws.Rows.count, in_col).End(xlUp).Row
End Function

Function checkAndAttachWorkbook(in_wb_path As String) As Workbook
  Dim wb As Workbook
  Dim mywb As String
  mywb = in_wb_path
  
  For Each wb In Workbooks
    If LCase(wb.FullName) = LCase(mywb) Then
      Set checkAndAttachWorkbook = wb
      Exit Function
    End If
  Next
  
  Set wb = Workbooks.Open(in_wb_path, UpdateLinks:=0)
  Set checkAndAttachWorkbook = wb

End Function
 
Function checkAndCloseWorkbook(in_wb_path As String, in_saved As Boolean)
  Dim wb As Workbook
  Dim mywb As String
  mywb = in_wb_path
  For Each wb In Workbooks
    If LCase(wb.FullName) = LCase(mywb) Then
      wb.Close savechanges:=in_saved
      Exit Function
    End If
  Next
End Function

三,輸出結果:

兩種方法輸出結果相同:

四,比較總結:

Python pandas 內置了大量處理數據的方法,我們不需要重復造輪子,用起來很方便,代碼簡潔的多。
Excel VBA 處理這個需求,使用了 數組,字典等數據結構(實際需求中,數據量往往很大,所以一些地方沒有直接使用遍歷單元格的方法),以及處理字符串,數組和字典的很多方法,對文件的操作也很復雜,一旦出錯,調試起來比python也較困難,代碼已經盡量優化,但還是遠比 Python要多。

到此這篇關于VBA處理數據與Python Pandas處理數據案例比較分析的文章就介紹到這了,更多相關VBA與Python Pandas處理數據內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于python requests selenium爬取excel vba過程解析
  • VBA數組用法案例詳解
  • 詳解bootstrap導航欄.nav與.navbar區別
  • python兼容VBA的用法詳解

標簽:宜春 松原 河北 石嘴山 鄂州 六安 淄博 自貢

巨人網絡通訊聲明:本文標題《VBA處理數據與Python Pandas處理數據案例比較分析》,本文關鍵詞  VBA,處理,數據,與,Python,Pandas,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《VBA處理數據與Python Pandas處理數據案例比較分析》相關的同類信息!
  • 本頁收集關于VBA處理數據與Python Pandas處理數據案例比較分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 高潮?喷水?抽搐| china东北粗口gaymovie| 小A影院| 上吃奶下面日视频| 男生鸡鸡插女生| 国产精品片AA在线观看| 18??一区二区三区亚洲喷水| 国内自拍经典三级在线| 国偷自产一区二区三区亲奶| 含着奶头搓揉深深挺进P漫画寡妇| 性天堂网| 六月丁香综合| 808.xcc成人观看| 学生被?到爽??流牛奶免费 | 操美女屁股| 一级毛片免费看| 狠狠色狠狠色综合丁香| 99久热视频在线精品| 三上悠亚在线| 亚洲综合一区二区精品久久| 日本janpanese护士bus中国| 国产免费午夜a无码v视频色欲| 6699嫩草久久久精品影院| 变态女的校园自虐露出h文| 国产三级网页| 天美传谋和果冻传媒最漂亮| 久久精品美乳| 日本夜爽爽一区二区三区| 中日韩人妻欧美卡一卡二卡三AV | 高清一级做a爱过程不卡视频| 少妇人妻偷人精品视蜜桃久久九七| 亚洲AV欧洲AV人人爽爽电影| 欧美日韩亚洲中文字幕| 国产午夜激无码毛片久久直播软件| 快点好舒服进来受不了| 人人爽人人爽人人片av免费| 老妇与子交厨房| 色就是色欧美色图| 《特殊的精油按摩》日本| a在线免费观看视频| 性久久久久久久|