【Information Gain 計算 python實現】http://blog.csdn.net/junfeng_feng/article/details/7650117python
數據挖掘模型中的IV和WOE詳解 :http://blog.csdn.net/kevin7658/article/details/50780391數組
【字典排序】 http://blog.csdn.net/ghostfromheaven/article/details/7675096安全
1、列表app
列表 a=[1,2,3,4,5,6,7]函數
要取出其中第0個元素以及第3個之後的元素:測試
方法1:a.pop(1).pop(1)spa
方法2:新建列表,b=[], b=[a[0]]+a[2:].net
2、itemgetter對列表排序code
from operator import itemgetterorm
[注意】itemgetter後面括號的參數是表明的第幾個區域,例如元組是(2,3),則第0個區域的值是2,第1個區域的值是3.
a=[('b',2),('a',1),('c',0)]
1.使用元組的第二個元素進行排序:
b=sorted(a,key=itemgetter(1))
結果:[('c',0),('a',1),('b',2)]
2.是用元組的第1個元素進行排序:
b=sorted(a,key=itemgetter(0))
結果:[('a',1),('b',2),('c',0)]
三、先對元祖的第2個元素排序,再對第1個進行排序:
b=sorted(a,key=itemgetter(1,0))
結果:[('c',0),('a',1),('b',2)]
四、不接收返回值,直接改動原列表
import operator
a=[0,1,1,1,1,0,0]
b=[0.3,0.7,0.8,0.8,0.9,0.4,0.5]
lt=[]
for i ,v in enumerate(b):
tmp=[v,i]
lt.append(tmp)
print lt
lt.sort(key=operator.itemgetter(0))
print lt
3、字典的get方法
Python 字典(Dictionary) get() 函數返回指定鍵的值,若是值不在字典中返回默認值。
dict.get(key, default=None)
dict = {'Name': 'Zara', 'Age': 27}
a=dic.get('age',0) #result: 27
b=dic.get('sex',0) #result:0
4、刪除列表中的空值
a=[1,2,3,'']
way1:a.remove('')
way2: b=[x for x in a if len(x)>0]
5、同時使用2個分隔符對文本進行分隔
import re
f_in = codecs.open('sex','r','utf-8')
for i in f_in.readlines():
line = i.strip().split('\t')
keys =re.split(';|,',line[-1]) #pkg列表是按;分隔
keys.remove('')
f_in.close()
6、按行枚舉 python enumerate
enumerate()是python的內置函數
enumerate在字典上是枚舉、列舉的意思
對於一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它能夠同時得到索引和值
enumerate多用於在for循環中獲得計數
若是對一個列表,既要遍歷索引又要遍歷元素時,首先能夠這樣寫:
list1 = ["這", "是", "一個", "測試"]
for i in range (len(list1)):
print i ,list1[i]123123
上述方法有些累贅,利用enumerate()會更加直接和優美:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1):
print index, item
>>>
0 這
1 是
2 一個
3 測試1234567812345678
enumerate還能夠接收第二個參數,用於指定索引發始值,如:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1, 1):
print index, item
>>>
1 這
2 是
3 一個
4 測試1234567812345678
補充
若是要統計文件的行數,能夠這樣寫:
count = len(open(filepath, 'r').readlines())11
這種方法簡單,可是可能比較慢,當文件比較大時甚至不能工做。
能夠利用enumerate():
count = -1
for index, line in enumerate(open(filepath,'r')):
count += 1
7、
u = array([[1,2],[3,4]])
m = u.tolist() #轉換爲list
m.remove(m[0]) #移除m[0]
m = np.array(m) #轉換爲array
8、python中使用eval() 和 ast.literal_eval()的區別
eval函數在Python中作數據類型的轉換仍是頗有用的。它的做用就是把數據還原成它自己或者是可以轉化成的數據類型。
那麼eval和ast.literal_val()的區別是什麼呢?
eval在作計算前並不知道須要轉化的內容是否是合法的(安全的)python數據類型。只是在調用函數的時候去計算。若是被計算的內容不是合法的python類型就會拋出異常。
ast.literal則會判斷須要計算的內容計算後是否是合法的python類型,若是是則進行運算,不然就不進行運算。
9、chain的使用
輸出:a b c 11 22 abc
10、enumerate使用,返回元素和該元素的索引
a=['a','b','c','d']
dict((w, i + 1) for i,w in enumerate(a))
輸出:{'a': 1, 'c': 3, 'b': 2, 'd': 4}
asarray(a, dtype=None, order=None)
Convert the input to an array.
舉例:
1)Convert a list into an array:將列表轉換爲數組
2)將數據類型轉換爲float和int
3)判斷a中數是否大於0,若是大於0,則將該數置爲1,