python操作

-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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值