python操作

来源:互联网 发布:100元的智能手机淘宝 编辑:程序博客网 时间:2024/05/16 10:58

-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([])    df0 = pd.concat([df0,df1],axis=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 = 0for 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 pdtemp=[0,0.1,0.1,0.2,0.3,0.4,0.5,1]list1=pd.cut(temp,4,labels=range(4)).labelslist2=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 0
原创粉丝点击