-12、try:
... ...
except Exception as e:
print('WinError:',e)
-11、np.random.choice([1,2,3,4,5,6], 2, replace=True) 抽取的样本可重复出现
np.random.choice([1,2,3,4,5,6], 2, replace=True) 抽样的样本不可重复出现
-10、a=np.array([[1,0],[2,-2],[-2,1]])
np.where(a>0,a,0) 修改np数组中<0的值为0
Out:array([[1, 0],[2, 0],[0, 1]])
-9、x=np.array([1,2,3,4,5])
np.random.rand(*x.shape) 生成和x形状一样的np数组
Out: array([ 0.47655442, 0.03683675, 0.90876938, 0.29218152, 0.53360575])
-8、求次方 ** np.square
/**/np.multiply(a,a)
都是对矩阵的每个元素平方,
而如果要对矩阵进行平方,可以用a.dot(a)
或者np.dot(a,a)
,则是矩阵相乘!
dW = np.zeros_like(W) 定义一个新的np数组
a=np.array([-1,1,-1,2,3])
a*(a>0)
Out: array([0, 1, 0, 2, 3])
-7、X_train = np.hstack([X_train, np.ones((X_train.shape[0], 1))]) 水平扩展1个np数组
np.concatenate((a,b), axis=0) 按行合并两个np数组
a = np.array([1,2,2,1,1,0,1])
np.array_split(a,2,axis=0) 将1个np数组分裂成2个,Out:[array([1, 2, 2, 1]), array([1, 0, 1])]
-6、y_train=np.array([1,2,3,4,5,6,1,2,3,4,5])
np.flatnonzero(y_train==1)
Out:array([0, 6], dtype=int64)
np.flatnonzero(y_train>1)
Out:array([ 1, 2, 3, 4, 5, 7, 8, 9, 10], dtype=int64) np.array中找=某值的index
np.argsort(y_train)
Out: array([ 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5], dtype=int64) argsort返回数组从小到大的索引
x=np.array([1,2,2,4,8,8])
np.bincount(x) 统计0到8出现的次数 Out:array([0, 1, 2, 0, 1, 0, 0, 0, 2], dtype=int64)
np.argmax(np.bincount(x)) argmax返回数组中最大值的索引 Out: 2
-5、查看tensorflow的版本:tf.__version__
-4、spyder自动对齐:shfit+Tab
-3、sns.heatmap 画相关图 sns.heatmap(data.drop('phone',axis=1).corr(), vmax=0.6, square=True, annot=True) 不是皮尔森系数
dataframe的协方差和相关系数,计算的就是两个或多个column之间的相关参数
df.corr()相关系数 协方差用于衡量两个变量的总体误差 不仅表示线性相关的方向,还表示线性相关的程度,取值[-1,1]。
df.cov()协方差 X、Y的协方差除以X的标准差和Y的标准差 只表示线性相关的方向,取值正无穷到负无穷。
df.corr(df['a'])计算所有列和某个列的相关系数
-2、将一个txt文件中的一列数据,读成list
features=pd.read_csv('C:\\Users\\123\\Desktop\\51\\1.txt',header=None)
accept_cols=[]
for i in features[0]:
accept_cols.append(i)
-1、spyder调整界面摆布:view 菜单下 Reset Windows Layout Yes
0、查看函数说明 ?函数名
1、读入数据时指定每列的格式,用dtype参数,指定第一列为index
rawdata = pd.read_csv('C:\\Users\\123\\Desktop\\0313\\dun_details.txt',sep="\t",names = ['mobile_imsi','tel','num','start_time'],dtype={'mobile_imsi':str,'tel':str,'num':int,'start_time':str},index_col=0)
2、df.dtypes
3、读入的txt文件中含有中文字符,需指定编码方式
UTF8编码格式很强大,支持所有国家的语言;GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符
for line in open("C:\\Users\\123\\Desktop\\tag_for_duntel.txt","r",encoding='utf-8'):
line = line.strip()
strs = line.split('\t')
4、路径中.的含义
当前工作目录
5、dataframe常用操作
计算各列数据总和并作为新列添加到末尾:df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1)
计算各行数据总和并作为新行添加到末尾:df.loc['Row_sum'] = df.apply(lambda x: x.sum())
改某列的部分行:df.ix[df['a']==1,'b']=2 a列=1时,b列取值2
dataframe按第一列排序:tmp1.sort_values(by=tmp1.columns[0],inplace=True)
merge合并:total_df = pd.merge(object_df, repay_df, how='left', on = 'ListingId')
weidu_with_labels=pd.merge(weidu,wacai_import,left_on='phone',right_on='mobile',how='left')
按某列merge,不是默认按indexmerge,先left_on,再right_on
替换replace:total_df = total_df.replace('\\N','2017-01-30') \\N不是nan的意思
tmp1 = tmp1.fillna(0)
tmp1=tmp1.replace(np.inf,100)
tmp1=tmp1.replace(-np.inf,-100)
重置index:train_df.reset_index(drop=True,inplace=True)
修改特定列的列名:df = df.rename(columns={'a1': 'a','e1': 'e'})
筛选数据:data = rawdata[rawdata['tel']=='05138'] tel是str类型 两个等号!
data = rawdata.ix[:,['contact','call_out_times']]
data = rawdata[['contact','call_out_times']]
增加列:df['label'] = 1
删除列drop:del train_df['recorddate']
table=table.drop('product_month', axis=1)
删除空值:data['Fare'].dropna()
缺失值填充:train_df = train_df.fillna(0)
取平均值:np.median(data['Age'].dropna())
保存csv文件时,不保存index:train_df.to_csv('./train.csv',index = False)
读入csv文件:train_df = pd.read_csv("./train.csv", encoding="gbk")
apply修改列的数据格式:
dataset['Age'] = dataset['Age'].astype(int)
df_original['call_out_times']=df_original['call_out_times'].
apply(lambda x: int(x) lambda x: x.split(' ')[0] lambda x: 0 if type(x) == float else 1)
messages['is_weekend'] = messages['day_of_week'].isin([5,6]).apply(lambda x: 1 if x == True else 0)
agg操作group by分组结果:df.groupby(by='col1').agg({'col2':['max', 'min']}).reset_index()
# Mapping Sex
dataset['Sex'] = dataset['Sex'].map( {'female': 0, 'male': 1} ).astype(int)
# Mapping titles
title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}
dataset['Title'] = dataset['Title'].map(title_mapping)
取列名:for col in X.columns.values/X.columns[0:-1]:
去重:wacai_import=wacai_import.drop_duplicates('mobile')
concat合并列:table = pd.concat([table, dummies], axis=1) axis=0 行,默认是按行合并。按列合并时,需要指定axis。 要加方括号!
nunique去重计数:train['Ticket'].nunique()
统计每列空值的个数:rawdata.isnull().sum()
ravel:y_train.values.ravel()
定义空dataframe:df0 = pd.DataFrame([]) df1 = pd.DataFrame(columns=['a', 'b', 'c', 'd', 'e']) df0 = pd.concat([df0,df1],axis=0)
增加行:df0.loc[0]=[image,'degree0',0.89,66.32,144.35] #0行
dataframe数据类型转为float:df = df.astype('float')
取分组的均值,排序:
1:train[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)
isin:data=train[train['Age'].isin([15,16,17,18,19,20])]
2:all_iv_detail = all_iv_detail.sort_values(by=['ori_IV','var_name','max'],ascending=[False,True,True])
3:combine['Shared_ticket'] = np.where(combine.groupby('Ticket')['Name'].transform('count') > 1, 1, 0)
显示groupby的结果:
grouped = train.groupby('Ticket')
k = 0
for name, group in grouped:
if (len(grouped.get_group(name)) > 1):
print(group.loc[:,['Survived','Name']])
k += 1
if (k>10):
break
df.describe(include='all')
df.corr(method='pearson')
5.1将类别变量转化为哑变量(若干个0/1变量):
titanic_train=titanic_train.join(pd.get_dummies(titanic_train.Pclass,prefix='Pclass'))
将Pclass转化为Pclass,Pclass_1,Pclass_2,Pclass_3
5.2join:
titanic_train=titanic_train.join(pd.get_dummies(titanic_train.Pclass,prefix='Pclass'))
5.3填充缺失值的包
#missing values in fare
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN',strategy='median',axis=0)
imputer = imputer.fit(titanic_train[['Fare']])
titanic_train[['Fare']]=imputer.transform(titanic_train[['Fare']])
imputer = imputer.fit(titanic_test[['Fare']])
titanic_test[['Fare']]=imputer.transform(titanic_test[['Fare']])
5.4自定义函数:
def inpute_age(cols):
Age = cols[0]
Pclass = cols[1]
if pd.isnull(Age):
if Pclass == 1:
return 37
elif Pclass == 2:
return 29
else: return 24
else: return Age
df['Age']=df[['Age','Pclass']].apply(inpute_age, axis=1)
6、时间常用操作
字符串日期转化为时间格式:object_df['借款成功日期'] = pd.to_datetime(object_df['借款成功日期'])
时间相减,得到相差天数:from datetime import datetime
a = '2016-02-19 12:25:54'
b = '2016-02-19 12:25:55'
time_a = datetime.strptime(a,'%Y-%m-%d %H:%M:%S')
time_b = datetime.strptime(b,'%Y-%m-%d %H:%M:%S')
print (time_b - time_a).days
messages['day_of_week'] = messages['timestamp'].apply(lambda x: x.dayofweek)
messages['year_month'] = messages['timestamp'].apply(lambda x: x.strftime("%Y-%m"))
7、cutdata
import pandas as pd
temp=[0,0.1,0.1,0.2,0.3,0.4,0.5,1]
list1=pd.cut(temp,4,labels=range(4)).labels
list2=pd.qcut(temp,4,labels=range(4)).labels
bins = (-1, 0, 5, 12, 18, 25, 35, 60, 120)
group_names = ['Unknown', 'Baby', 'Child', 'Teenager', 'Student', 'Young Adult', 'Adult', 'Senior']
categories = pd.cut(df.Age, bins, labels=group_names)
8、
listA = [1,2,3,4,5]
listB = [3,4,5,6,7]
#求交集
retJ1 = list(set(listA)&(set(listB)))
retJ2 = list(set(listA).intersection(set(listB)))
#求并集
retB1 = list(set(listA)|(set(listB)))
retB2 = list(set(listA).union(set(listB)))
#求差集,在B中但不在A中
retC1 = list(set(listB)-(set(listA)))
retC2 = list(set(listB).difference(set(listA)))
#并集减差集
ret=list(set(listB)^(set(listA)))
sysmmetric difference(对称差集) #并集减交集
9、pdb是Python自带的一个库,为Python程序提供了一种交互式的源代码调试功能
ctrl+F10 单步调试
10、建项目
11、按行读txt
12、正则表达式 律师+号码
re.findall(u'(.律师.{0,10}\d{3,11})',content)
re.findall(u'(.律师.{0,10}((\d{10,12})|(0[1-9]\d{1,2}[--—, ]?[1-9]\d{6,7})))',content)
toAddWeidu = []
for i in weidu.columns.values:
if re.findall(('TNumsCon|TNumsIn|TNumsOut'),i):
toAddWeidu.append(i)
13、df中间插一列、导出多个sheet
15、读mysql表中的数据:
import pandas as pd
import pymysql
conn = pymysql.connect(host = '192.168.109.200', port = 3306, user = 'root', passwd = 'root123', db='db_grayscale', charset = 'utf8')
cursor=conn.cursor()
df_a=pd.read_sql('SELECT tel,rule_1,rule_2 FROM vw_call_details',conn)
16、字符串查找
info = 'abca'
print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
info = 'abca'
print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
info = 'abca'
print info.find('333')##返回-1,查找不到返回-1