2
使用Python进行代码编写时,将其设置为科学模式,并在函数前面添加#%%标志,然后也可以达到一个一个代码块的效果。企业可以单独运行某一个部分自己帮你写的,在26版本下测试通过,你如果没安装pywin32模块要先下载安装一下。
希望对你有用!
=======================================================
#本程序在python26版本下测试通过
import win32comclient #这里用到win32comclient,需要安装pywin32模块
#下载地址 >
字符串的话,你可以把他当作列表处理:
str = 'hello world'
如果是想去掉第一个字母'o',并且知道是第5个字符, index=4
1使用分片 new_str = str[:4]+str[5:] ;
2循环读取new_str = ''join([str[i] for i in range(len(str)) if i!= 4]) ;
3字符替换new_str = strreplace('o','',1) #后面的1代表替换第一个匹配'o'的字符 。
Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
某列中所有的数据都是1,加起来不就是总行数吗?引言本文的目的,是向您展示如何使用pandas来执行一些常见的Excel任务。有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其他地方找到的复杂功能同等重要。作为额外的福利,我将会进行一些模糊字符串匹配,以此来展示一些小花样,以及展示pandas是如何利用完整的Python模块系统去做一些在Python中是简单,但在Excel中却很复杂的事情的。有道理吧?让我们开始吧。为某行添加求和项我要介绍的第一项任务是把某几列相加然后添加一个总和栏。首先我们将excel数据导入到pandas数据框架中。importpandasaspdimportnumpyasnpdf=pdread_excel("excel-comp-dataxlsx")dfhead()我们想要添加一个总和栏来显示Jan、Feb和Mar三个月的销售总额。在Excel和pandas中这都是简单直接的。对于Excel,我在J列中添加了公式sum(G2:I2)。在Excel中看上去是这样的:下面,我们是这样在pandas中 *** 作的:df["total"]=df["Jan"]+df["Feb"]+df["Mar"]dfhead()接下来,让我们对各列计算一些汇总信息以及其他值。如下Excel表所示,我们要做这些工作:如你所见,我们在表示月份的列的第17行添加了SUM(G2:G16),来取得每月的总和。进行在pandas中进行列级别的分析很简单。下面是一些例子:df["Jan"]sum(),df["Jan"]mean(),df["Jan"]min(),df["Jan"]max()(1462000,97466666666666672,10000,162000)现在我们要把每月的总和相加得到它们的和。这里pandas和Excel有点不同。在Excel的单元格里把每个月的总和相加很简单。由于pandas需要维护整个DataFrame的完整性,所以需要一些额外的步骤。首先,建立所有列的总和栏sum_row=df[["Jan","Feb","Mar","total"]]sum()sum_rowJan1462000Feb1507000Mar717000total3686000dtype:int64这很符合直觉,不过如果你希望将总和值显示为表格中的单独一行,你还需要做一些微调。我们需要把数据进行变换,把这一系列数字转换为DataFrame,这样才能更加容易的把它合并进已经存在的数据中。T函数可以让我们把按行排列的数据变换为按列排列。df_sum=pdDataFrame(data=sum_row)Tdf_sum在计算总和之前我们要做的最后一件事情是添加丢失的列。我们使用reindex来帮助我们完成。技巧是添加全部的列然后让pandas去添加所有缺失的数据。df_sum=df_sumreindex(columns=dfcolumns)df_sum现在我们已经有了一个格式良好的DataFrame,我们可以使用append来把它加入到已有的内容中。df_final=dfappend(df_sum,ignore_index=True)df_finaltail()额外的数据变换另外一个例子,让我们尝试给数据集添加状态的缩写。对于Excel,最简单的方式是添加一个新的列,对州名使用vlookup函数并填充缩写栏。我进行了这样的 *** 作,下面是其结果的截图:你可以注意到,在进行了vlookup后,有一些数值并没有被正确的取得。这是因为我们拼错了一些州的名字。在Excel中处理这一问题是一个巨大的挑战(对于大型数据集而言)幸运的是,使用pandas我们可以利用强大的python生态系统。考虑如何解决这类麻烦的数据问题,我考虑进行一些模糊文本匹配来决定正确的值。幸运的是其他人已经做了很多这方面的工作。fuzzywuzzy库包含一些非常有用的函数来解决这类问题。首先要确保你安装了他。我们需要的另外一段代码是州名与其缩写的映射表。而不是亲自去输入它们,谷歌一下你就能找到这段代码code。首先导入合适的fuzzywuzzy函数并且定义我们的州名映射表。fromfuzzywuzzyimportfuzzfromfuzzywuzzyimportprocessstate_to_code={"VERMONT":"VT","GEORGIA":"GA","IOWA":"IA","ArmedForcesPacific":"AP","GUAM":"GU","KANSAS":"KS","FLORIDA":"FL","AMERICANSAMOA":"AS","NORTHCAROLINA":"NC","HAWAII":"HI","NEWYORK":"NY","CALIFORNIA":"CA","ALABAMA":"AL","IDAHO":"ID","FEDERATEDSTATESOFMICRONESIA":"FM","ArmedForcesAmericas":"AA","DELAWARE":"DE","ALASKA":"AK","ILLINOIS":"IL","ArmedForcesAfrica":"AE","SOUTHDAKOTA":"SD","CONNECTICUT":"CT","MONTANA":"MT","MASSACHUSETTS":"MA","PUERTORICO":"PR","ArmedForcesCanada":"AE","NEWHAMPSHIRE":"NH","MARYLAND":"MD","NEWMEXICO":"NM","MISSISSIPPI":"MS","TENNESSEE":"TN","PALAU":"PW","COLORADO":"CO","ArmedForcesMiddleEast":"AE","NEWJERSEY":"NJ","UTAH":"UT","MICHIGAN":"MI","WESTVIRGINIA":"WV","WASHINGTON":"WA","MINNESOTA":"MN","OREGON":"OR","VIRGINIA":"VA","VIRGINISLANDS":"VI","MARSHALLISLANDS":"MH","WYOMING":"WY","OHIO":"OH","SOUTHCAROLINA":"SC","INDIANA":"IN","NEVADA":"NV","LOUISIANA":"LA","NORTHERNMARIANAISLANDS":"MP","NEBRASKA":"NE","ARIZONA":"AZ","WISCONSIN":"WI","NORTHDAKOTA":"ND","ArmedForcesEurope":"AE","PENNSYLVANIA":"PA","OKLAHOMA":"OK","KENTUCKY":"KY","RHODEISLAND":"RI","DISTRICTOFCOLUMBIA":"DC","ARKANSAS":"AR","MISSOURI":"MO","TEXAS":"TX","MAINE":"ME"}这里有些介绍模糊文本匹配函数如何工作的例子。processextractOne("Minnesotta",choices=state_to_codekeys())('MINNESOTA',95)processextractOne("AlaBAMMazzz",choices=state_to_codekeys(),score_cutoff=80)现在我知道它是如何工作的了,我们创建自己的函数来接受州名这一列的数据然后把他转换为一个有效的缩写。这里我们使用score_cutoff的值为80。你可以做一些调整,看看哪个值对你的数据来说比较好。你会注意到,返回值要么是一个有效的缩写,要么是一个npnan所以域中会有一些有效的值。defconvert_state(row):abbrev=processextractOne(row["state"],choices=state_to_codekeys(),score_cutoff=80)ifabbrev:returnstate_to_code[abbrev[0]]returnnpnan把这列添加到我们想要填充的单元格,然后用NaN填充它df_finalinsert(6,"abbrev",npnan)df_finalhead()我们使用apply来把缩写添加到合适的列中。df_final['abbrev']=df_finalapply(convert_state,axis=1)df_finaltail()我觉的这很酷。我们已经开发出了一个非常简单的流程来智能的清理数据。显然,当你只有15行左右数据的时候这没什么了不起的。但是如果是15000行呢?在Excel中你就必须进行一些人工清理了。分类汇总在本文的最后一节中,让我们按州来做一些分类汇总(subtotal)。在Excel中,我们会用subtotal工具来完成。输出如下:在pandas中创建分类汇总,是使用groupby来完成的。df_sub=df_final[["abbrev","Jan","Feb","Mar","total"]]groupby('abbrev')sum()df_sub然后,我们想要通过对dataframe中所有的值使用applymap来把数据单位格式化为货币。defmoney(x):return"${:,0f}"format(x)formatted_df=df_subapplymap(money)formatted_df格式化看上去进行的很顺利,现在我们可以像之前那样获取总和了。sum_row=df_sub[["Jan","Feb","Mar","total"]]sum()sum_rowJan1462000Feb1507000Mar717000total3686000dtype:int64把值变换为列然后进行格式化。df_sub_sum=pdDataFrame(data=sum_row)Tdf_sub_sum=df_sub_sumapplymap(money)df_sub_sum最后,把总和添加到DataFrame中。final_table=formatted_dfappend(df_sub_sum)final_table你可以注意到总和行的索引号是‘0'。我们想要使用rename来重命名它。final_table=final_tablerename(index={0:"Total"})final_table结论到目前为止,大部分人都已经知道使用pandas可以对数据做很多复杂的 *** 作——就如同Excel一样。因为我一直在学习pandas,但我发现我还是会尝试记忆我是如何在Excel中完成这些 *** 作的而不是在pandas中。我意识到把它俩作对比似乎不是很公平——它们是完全不同的工具。但是,我希望能接触到哪些了解Excel并且想要学习一些可以满足分析他们数据需求的其他替代工具的那些人。我希望这些例子可以帮助到其他人,让他们有信心认为他们可以使用pandas来替换他们零碎复杂的Excel,进行数据 *** 作。Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行。其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
(1)简单的if语句:
在第1行中,可包含任何条件测试,而在紧跟在测试后面的缩进代码块中,可执行任何 *** 作。如果条件测试的结果为True,Python就会执行紧跟在if语句后面的代码;否则Python将忽略这些代码。
(2)if-else语句
经常需要在条件测试通过了时执行一个 *** 作,并在没有通过时执行另一个 *** 作;在这种情况下,可使用Python提供的if-else语句。if-else语句块类似于简单的if语句,但其中的else语句,让你能够指定条件测试未通过时要执行的 *** 作。
(3)if-elif-else语句
经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else结构。Python只执行if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
条件测试:
(1)概念:
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
(2)检查是否相等:
通常情况下会用 “==”的左值和右值是否相等来判断程序是否继续进行,会区分大小写也会用“!=” 来表示不相等继续进行,相等则忽略。
(3)检查多个条件:
and: 要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一;如果每个测试都通过了,整个表达式就为True;如果至少有一个测试没有通过,整个表达式就为False。
or: 关键字or也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False。
(4)检查特定值是否包含在列表内:
要判断特定的值是否已包含在列表中,可使用关键字in。
(5)检查特定值是否不包含在列表内:
确定特定的值未包含在列表中很重要,可使用关键字not in。
(6)布尔表达式:
布尔表达式的结果要么为True,要么为False。
Python文件 *** 作主要有以下几种方式:
打开文件:使用open()函数打开文件,该函数需要指定文件名以及打开文件的模式(例如只读、只写、追加等)。打开文件后,可以使用文件对象进行读取、写入、关闭等 *** 作。
读取文件:使用文件对象的read()、readline()、readlines()方法来读取文件内容。read()方法可以一次性读取整个文件,readline()方法可以逐行读取文件,readlines()方法可以将文件的所有行读取到一个列表中。
写入文件:使用文件对象的write()方法将数据写入文件。write()方法可以接受字符串作为参数,并将其写入文件。
关闭文件:使用文件对象的close()方法关闭文件。关闭文件后,可以避免占用系统资源。
with语句:使用with语句可以自动管理文件的关闭。with语句创建一个上下文环境,在该环境中打开文件,并在代码块执行完毕后自动关闭文件。
os模块:使用os模块可以进行文件和目录的 *** 作,包括创建、重命名、删除、移动等。os模块还提供了一些与文件路径相关的函数,例如join()、split()、abspath()等,可以方便地处理文件路径。
在Python中,一个空代码块通常用于占位或者暂时不需要执行任何 *** 作的情况。例如,在编写程序时可能会遇到一些逻辑结构还未确定或者某个函数还未实现的情况,此时可以使用空代码块作为占位符。另外,在调试程序时也可以使用空代码块来临时禁用某段代码而无需删除它们。这种方式比注释掉该段代码更加方便和安全,因为注释掉的代码仍然存在于文件中并有可能影响其他部分的运行。
下面是一个示例:
```python
if condition:
# TODO: add code here later
else:
pass # do nothing for now
```
在上述示例中,`pass`关键字表示一个空语句块,并且在条件判断语句的“否则”分支中被使用。
使用filter来实现,以python3为例,如果删除列表中的所有0,则可使用下面代码实现:
a = [1,2,0,3,4,0,5,0,6]b = filter(lambda x: x != 0, a)
list(b)
效果如下:
注:如果使用python2则直接输出b即可,在python3中filter返回结果为可迭代的对象,需使用list转换成列表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)