查看dataframe各列缺失值个数的方法:
法一:
def missingva(x):
return sum(x.isnull())
df.apply(missingva,axis=0)
Out[39]:
序号 0
Root Id 0
客户名称 0
客户类型 0
.
.
.
单数(拆分) 0
业绩(拆分) 0
网站个数 0
端口 1335
dtype: int64
法二:
for x in range(len(df.columns)):
print("'"+str(df.columns[x])+"'"+'列的缺失值个数:',sum(df.iloc[:,x].isnull()))
'序号'列的缺失值个数: 0
'Root Id'列的缺失值个数: 0
'客户名称'列的缺失值个数: 0
'客户类型'列的缺失值个数: 0
'成交金额'列的缺失值个数: 0
'CTM业绩'列的缺失值个数: 0
'成交类型'列的缺失值个数: 0
'成交面积'列的缺失值个数: 0
'来电客户电话'列的缺失值个数: 0
.
.
.
'来电来源'列的缺失值个数: 0
'成交网站'列的缺失值个数: 0
'成交渠道'列的缺失值个数: 0
'月份'列的缺失值个数: 0
'单数(拆分)'列的缺失值个数: 0
'业绩(拆分)'列的缺失值个数: 0
'网站个数'列的缺失值个数: 0
'端口'列的缺失值个数: 1335
修改文件名:
import os
os.rename(r'd:\Users\zhanggl21\Desktop\新建文本文档.txt',r'd:\Users\zhanggl21\Desktop\8.txt')
os.rename(r'd:\Users\zhanggl21\Desktop\88.xlsx',r'd:\Users\zhanggl21\Desktop\100.xlsx')
os.rename(r'd:\Users\zhanggl21\Desktop\99.docx',r'd:\Users\zhanggl21\Desktop\100.docx')
os.rename(r'd:\Users\zhanggl21\Desktop\58eb438b77f0b.jpg',r'd:\Users\zhanggl21\Desktop\100.jpg')
在函数体内的变量在函数执行结束后就不能再用了,因为它只在函数中存在。在编写程序的世界里,这被称为“作用域”。
函数的组成部分--一个函数有三个部分组成:名字、参数,还有函数体。
类和对象:
在计算机的世界里,“对象”这个概念很重要。对象是程序组织代码的方法,它把复杂的想法拆分开来使其容易被理解。哺乳动物、动物
、活动、不动,这些都是给事物分类的方法。
如果一个类是另一个类家族的一部分,那么它是另一个类的“孩子”,另一个类是它的“父亲”。一个类可以同时是另外一些类的孩子和
父亲。
要告诉python一个类是另一个类的孩子,就在新类的名字后用括号加上父亲类(以下简称父类)的名字,就像这样:
>>>class Inanimate(Things):
pass
>>>class Animate(Things):
pass
这样,我们就创建了一个叫Inanimate的类并通过class Inanimate(Things)来告诉Python它的父类是Things。然后我们创建了叫Animate
的类并通过class Animate(Things)告诉python它的父类也是Things.
增加属于类的对象:
即在类里加入成员。
假设有一个长颈鹿,它的名字叫Reginald.我们知道它属于Giraffes类,但要用什么样的程序术语来描述一只叫Reginald的长颈鹿呢?我
们称Reginald是Giraffe类的一个对象(对象,object;还可以称它为“实例”,instance)。我们用下面这段代码把Reginald“引入”到
Python中:
>>>Reginald=Giraffes()
这段代码告诉python创建一个属于Giraffes类的对象,并把它赋值给变量Reginald.像用函数一样,类的名字后面要用括号。
要想让对象有用,在创建类的时候我们还要定义函数,这样这个类的对象就可以使用这些函数了。如果不在类的定义之后立刻使用pass关
键字,我们也可以增加一些函数定义。
定义类中的函数:
我们用和定义其它函数同样的方式来定义与某个类相关联的函数,不同的地方只是要在类的定义之下缩进。 例如,下面是一个没有与任
何类关联的普通函数:
>>>def this_is_a_normal_function():
print('I am a normal function')
下面是两个属于类的函数:
>>>class ThisIsMySillyClass:
def this_is_a_class_function():
print('I am a class function')
def this_is_also_a_class_function():
print('I am also a class function. See?')
用函数来表示类的特征:
我们可以给每一个类增加一些“特征”,来描述它是什么和它能做什么。“特征”就是一个类家族中的所有成员(还有它的子类)共同的
特点。 可以把这些特征想象成是一些动作,或者说函数,也就是那个类的对象能做的事情。
每个类都能使用它父类的特征(函数)。这意味着你不需要把一个类写得很复杂。你可以把函数放在这一特征最早出现的父类中。(这是
个让你的类保持简单和容易理解的好办法。)
通常,程序员会先创建类,而其中的函数什么也不做。先通过这种方式找出这个类应该做的事情,而不是马上进入到每个函数的细节中去
。
为什么使用类和对象:
使用了对象和类,我们可以调用(或者说运行)对象属于的类和它的父类所提供的函数。我们用点运算符“.”和函数的名字来调用对象
的函数。例如要让长颈鹿Reginald移动或者吃东西,我们可以这样调用函数:
>>>Reginald=Giraffes()
>>>reginald.move()
>>>reginald.eat_leaves_from_trees()
我们假设Reginald有一个叫Harold的长颈鹿朋友。让我们创建另一个叫harold的Giraffes对象:
>>>harold=Giraffes()
因为我们使用了对象和类,我们可以通过运行move函数来准确地告诉python我们所指的到底是哪一只长颈鹿。例如,如果我们想让Harold
移动而Reginald则留在原地,我们可以用harold对象来调用move函数,像这样:
>>>harold.move() #在这个例子中,只有Harold会移动。
删除列表内嵌套的列表:
>>>alst=list(range(8))
>>>alst
Out[6]: [0, 1, 2, 3, 4, 5, 6, 7]
>>>alst.append([11,19])
>>>alst
Out[8]: [0, 1, 2, 3, 4, 5, 6, 7, [11, 19]]
for x in alst:
if type(x)==list:
del alst[alst.index(x)]
print(alst)
out:
[0, 1, 2, 3, 4, 5, 6, 7]
#删除列表中所有指定元素
while 6 in alst:
alst.remove(6)
while alst.count(6)>0:
alst.remove(6)
bool函数:
bool函数只有一个参数,并根据这个参数的值返回真或假。当对数字使用bool函数时,0返回False,任何其它值都返回True.
>>bool(9)
Out[5]: True
>>bool(0)
Out[6]: False
当对其它类型的值使用bool时,比如字符串,对于没有值的字符串(也就是None或者空字符串)返回False,否则返回True.
>>print(bool(None))
out:False
>>print(bool('a'))
out:True
bool函数对于空的列表、元组和字典返回False,否则就返回True.
在循环中len函数尤其有用,我们可以用下面的代码来显示列表中元素的索引位置:
alst=list('dsahrt')
length=len(alst)
for x in range(0,length):
print('at index %s is %s' %(x,alst[x]))
out:
at index 0 is d
at index 1 is s
at index 2 is a
at index 3 is h
at index 4 is r
at index 5 is t
list(range(40,20,-2))
Out[35]: [40, 38, 36, 34, 32, 30, 28, 26, 24, 22]
random.randint来随机挑选一个数字:
random.randint(20,30)
Out[37]: 27
random.choice从列表中随机选取一个元素:
如果你想从一个列表中随机选取一个元素,而不是从一个给定的范围里,那么你可以使用choice.
alst=list('jeodkgye')
random.choice(alst)
Out[39]: 'e'
random.shuffle来给列表洗牌:
alst
Out[45]: ['e', 'o', 'y', 'e', 'd', 'j', 'g', 'k']
random.shuffle(alst)
alst
Out[47]: ['j', 'k', 'g', 'o', 'y', 'e', 'e', 'd']
time.sleep:
如果你想推迟或者让你的程序慢下来时,可以用sleep函数。
每隔一秒打印出每一个1--60的数字:
for x in range(10):
print(x)
time.sleep(2)
0
1
2
3
4
5
6
7
8
9
这样在显示每个数字时都有一个延迟。