python与vba处理数据的区别?
一、python与vba处理数据的区别?
现有一个 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要多。
二、如何提取Python数据?
步骤/方式1
正则表达式(re库)
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。
步骤/方式2
BeautifulSoup(bs4)
beautifulSoup是用python语言编写的一个HTML/XML的解析器,它可以很好地处理不规范标记并将其生成剖析树(parse tree)。它提供简单而又常见的导航(navigating),搜索及修改剖析树,此可以大大节省编程时间。
步骤/方式3
lxml
lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。
三、python 数据挖掘原理?
数据挖掘是通过对大量数据的清理及处理以发现信息, 并将这原理应用于分类, 推荐系统, 预测等方面的过程。
数据挖掘过程:
1. 数据选择
在分析业务需求后, 需要选择应用于需求业务相关的数据. 明确业务需求并选择好业务针对性的数据是数据挖掘的先决条件。
2. 数据预处理
选择好的数据会有噪音, 不完整等缺陷, 需要对数据进行清洗, 集成, 转换以及归纳。
3. 数据转换
根据选择的算法, 对预处理好的数据转换为特定数据挖掘算法的分析模型。
4. 数据挖掘
使用选择好的数据挖掘算法对数据进行处理后得到信息。
5. 解释与评价
对数据挖掘后的信息加以分析解释, 并应用于实际的工作领域。
四、python分析什么数据?
在统计学领域,有些人将数据分析划分为描述性统计分析、探索性数据分析以及验证性数据分析;其中,探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于已有假设的证实或证伪。
探索性数据分析是指为了形成值得假设的检验而对数据进行分析的一种方法,是对传统统计学假设检验手段的补充。该方法由美国著名统计学家约翰·图基(John Tukey)命名。
定性数据分析又称为“定性资料分析”、“定性研究”或者“质性研究资料分析”,是指对诸如词语、照片、观察结果之类的非数值型数据(或者说资料)的分析
五、python数据来源来源?
它的数据来源主要是来源于它的数据库
六、python如何保存数据?
python数据的保存方法如下:
1、如果你是使用集成的开发环境,直接去C盘文件夹下可以找到相应的程序文件,它是自动保存的;
2、如果你是使用python 自带的GUI,也可以像上面的方法找到文件,但也可以另存为(save as).py文件到你自己的地址;
3、如果你是使用命令行,你可以点击菜单“全选”、“复制”,到一个新建的txt文件中,然后保存.txt文件,并将文件扩展名.txt修改为.py即可。
七、python的模块之间与模块之间怎么调用数据?
可以定义一个全局表文件,用于模块间传递,也可以直接导入模块书记,但是易发生冲突
八、python数据挖掘与分析需要哪些数学知识?
如果说数学知识的话,个人认为高等数学、线性代数、概率论与数理统计、统计学、凸优化(运筹学)这些数学知识都要有吧,这些数学知识在数据挖掘、机器学习理论中都涉及的非常多
九、python爬虫可视化界面怎么与数据连接?
python爬虫可视化界面与数据连接那么首先是需要将数据从网站上爬取下来,需要使用到的是request模块进行数据的抓取,然后利用lxml模块对爬取的数据进行解析得到我们想要的数据,然后将这些数据按照自己的需求功能写入到excel里面或者是数据库里面实现数据的持久化,就达到了跟数据方面的连接。
十、Python与MySQL数据库: 如何在Python中使用MySQL实现数据存储
Python与MySQL数据库: 如何在Python中使用MySQL实现数据存储
Python作为一种简单易学的编程语言,以其强大的数据处理能力和丰富的库支持而备受欢迎。而MySQL作为一种轻量级的关系型数据库管理系统,同样在Web开发和数据存储中占据重要地位。本文将介绍如何在Python中使用MySQL实现数据存储,帮助您更好地利用这两个强大的工具。
首先,我们需要在Python中安装相应的MySQL驱动程序,常用的有MySQL-connector-python和PyMySQL两种。接下来,我们将详细介绍如何使用这两种驱动程序连接MySQL数据库、创建数据库、数据表以及进行数据的增删改查操作。
除此之外,我们还将探讨在实际项目中如何安全地使用Python与MySQL进行数据交互,包括数据的备份与恢复、数据的加密与解密,以及如何避免常见的SQL注入攻击。
最后,本文还将介绍一些常见的Python开发框架(如Django、Flask等)中如何与MySQL数据库进行集成,以及一些常见的最佳实践和性能优化技巧。
通过本文的学习,您将能够全面掌握Python与MySQL数据库的结合应用,为您未来的数据存储和Web开发提供强有力的支持。
感谢您阅读本文,希望可以为您在Python与MySQL数据库应用方面提供帮助。