zoukankan      html  css  js  c++  java
  • python基本数据预处理语法函数(1)

    numpy包:

    ####数组###########
    from numpy import * shape #获取维度 size #获取长度 arange(0,5,1) #生成数组函数,从0到5以1为间隔 mgrid[0:5,0:5,0:5] #生成多维数组
    np.zeros(2) #生成2个0
    np.zeros([2,2]) #生成2*2个0 np.arange(3) #返回连续数列,输入为3则返回[0,1,2]
    ####矩阵##################### from numpy import random random.rand(5,5) #生成5*5矩阵,值为0-1 a=np.matrix([[1,2,3],[2,3,4],[4,5,6]]) #或者 np.mat([[1,2,3],[2,3,4],[4,5,6]])) 生成矩阵
    a=np.mat(np.random.random(size=(3,3))) #生成随机矩阵 a=pd.DataFrame([[1,2,3],[2,3,4],[4,5,6]]) ##直接表示DataFrame
    a.columns=['a','b','c'] #修改列名
    a.T # a的转置矩阵
    a.I # a的逆矩阵
    pd.DataFrame(a) ##转换为DataFrame
    a*a.T # 矩阵相乘,T为逆矩阵 a.shape #获取矩阵的维度 np.exp(n) #e的n词次
    np.power(x,3) #返回x的3次方
    np.ones([3,3]) #生成3*3且值为1的2维数组,ones主要用于生成多维数组
    a=np.zeros([2,2])
    a=np.random.randint(3,10,size=[3,3]) #产生多维随机矩阵
    a=np.random.random((3,3)) #生成多维的小数随机数组
    #上面这条等价于: a=np.random.rand(3,3)
    a[1, :] #取a的第二行
    a[1 :] #取a第二行到末尾行
    b=a.astype(np.float32) #将a的格式转化为float32
    a.dtype #返回格式,输出float64
    b.dtype #返回格式,输出float32
    np.floor(1.5) #返回1
    np.ceil(1.5) #返回2
    a.describe() #对数据进行描述性统计
    a.transpose() #对a矩阵进行转置
    a.to_csv('C:/Users/1/Desktop/345.csv', encoding='utf-8', index=False) # 快速地将DataFrame导入csv文件
    
    
    ####其他#####################
    set(a) #元素拆分
    a.count #统计个数
     

    pandas包:

    a=pd.Series(np.random.randn(5),index=['a','b','c','d','e'])   #生成随机序列,'a'到'e'为列名,通过a['a']来读取序列内容
    d = {'a': 0, 'b': 1, 'c': 2} 
    pd.Series(d) #从dict生成series d={'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([4,5,6],index=['a','b','c'])} pd.DataFrame(d) ##建立dataframe
    b['three']=b['one'] ##增加列
    del b['one'] ##删除列
    b.insert(3,'oo',b['two']) ##插入列名为'oo',内容为b['two']的列
    b[0:1] ##返回第一行
    b['one']b.one ##返回列
    b.head() ##默认前5行 b.head(10) 为前10行
    b.tail() ##默认后5行
    b[b.two==4] ##获取列名为'two'的值为4的行
    b.loc[b['two']== 4] ##返回列名为'two',且值为4的行 (类似于R语言dplyr包的filter函数)
    b['two'] #返回列名为two的列
    b.loc['two']
    #返回行名为'two'的行
    b.columns.size ##获取列数
    b.ix[1]
    ##第2行 ix和iloc的区别在于假若index是int类的,则在排序的时候ix会按照index的来,这时并不完全按照实际的行和列顺序,同样出现字符型index的时候对ix也是如此
    b.ix[1,2] ##第2行第3列
    b.ix[:,2] ##第3列的所有行
    b.icol(2) ##第3列
    b.irow(2)
    ##第3行
    b.describe() ##按列对数据进行汇总
    b.T.describe() ##按行对数据进行汇总
    b.sort(columns='A') ##对A列进行排序
    b.iloc[1,2] ##提取b的第2行第3列
    b[b>1] ##提取b里面大于0的部分
    b[b.A>0] ##提取A列大于0的行
    b.groupby('two').sum() ##对two分组并计算每组总和,与R语言和sql的groupby类似
    pd.date_range("2016-07-01 00:00:00", "2016-07-31 23:58:00", freq='2min') #返回时间范围内以2min作为时间间隔的所有时间
    pd.date_range(start='20170101',periods=10) #返回给定时间之后10天的内容
    midx=pd.MultiIndex.from_product([['A','B','C'],['X','Y']],names=['class1','class2']) #使用笛卡尔积创建MultiIndex对象
    #笛卡尔乘积的作用:
    以日期的缺失值查找为例,根据笛卡尔积作一个排列组合,然后和目标表进行关联,查找哪些数据缺失
    例如有个考勤记录,记录了100个人2011年5月的考勤信息,理论上每个人每天都有考勤信息,实际上有人在某天的值缺失了。不管是一天一天的查询或者是一人一人的查询都比较麻烦,因此可以作每个人和每一天的笛卡尔积,然后和实际的表去关联,从而得出哪些值是缺失的。
    df=pd.DataFrame({'A':[1,2,3],'B':['a','b','f']})
    df.T #转置
    df.sort_values(by='A',ascending=False) #对列名为'A'进行降序排序

    df.isin([1,2,'a','b']) #判断[1,2,'a','b']是否在df之内
    a=pd.read_csv('....')
    a['title'].str.len().apply(lambda x:np.floor(x/19)) #返回a的title列的每条字符串的长度,进行除以19后进行取下限整数的结果
    a['num'].astype('str') #类型转换,转为字符型
    a.loc[1,'price'] #获取符合条件的行列
    a.loc[a['day_of_week'].isin([6, 7]), 'day_of_week_en'] = 3 #将符合条件的行列值对应的内容进行替换
    a.loc[a['clean'].isin(['0']),'clean'] #同上
    df1 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],'D': ['D2', 'D3', 'D6', 'D7'],'F': ['F2', 'F3', 'F6', 'F7']},index=[2, 3, 6, 7])
    df2 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],'D': ['D2', 'D3', 'D6', 'D7'],'F': ['F2', 'F3', 'F6', 'F7']},index=[2, 3, 6, 7])
    pd.concat([df1,df2],axis=0) #将不同的dataframe进行合并,axis为设置合并的维度
    a=a.drop(['g1','g2','g3','g4'],axis=1) #删除列名字为['g1','g2','g3','g4']的列

    math包:

    from math import *
    math.tanh(x) #双曲正切函数

    collection包:

    import collections
    point=collections.namedtuple('point',['x','y']) #创建一个自定义的tuple对象
    p=point(1,2)
    p.x #返回1
    p.y #返回2
    c = Counter('abracadabra')
    c.most_common(3) #返回出现次数最多的前3项

    其他:

    yield介绍:
    返回生成器,从第一次返回值之后,在下次循环时候从该位置开始继续迭代

    def aa(ali):
      for i in ali:
        i=i+1
        yield i+5

    b=aa([1,2,3,4])

    [w for w in b]  #返回[7,8,9,10]

    sys包:

    import sys
    sys.path.append('...') #插入路径,用于读入自定义模块
    sys.exit(1) #用于中途退出程序

    os包:

    import os
    os.getcwd() #获取当前路径
    os.chdir('...') #更新路径
    %run xx.py #运行路径下的py文件
    os.path.join('aaa','bbb','ccc') #返回'aaa/bbb/ccc'
    os.listdir('C:/Users/1/Desktop/123/') #返回某路径下的所有文件名

     assert用法:

    assert condition     #如果condition为True,则进入下一步,若为False,则raise一个AssertionError错误

     字符串的一些预处理方法:

    a=['1','2','3']
    ' '.join(a)    #返回'1 2 3' 字符串

     字典dict:

    #获取key所对应的value
    dict_c={0:'catering', 1:'facility', 2:'flow', 3:'manage', 4:'price', 5:'service', 6:'traffic', 7:'view'}
    dict_c.get(0)    #返回字典的key中0对应的值
    dict_c.get(1)    #返回字典的key中1对应的值
    #获取字典的keys
    list(dict_c.keys())
    #获取字典的values
    list(dict_c.values())
    a={'a':1,'b':2}.items()
    type(a) #返回dict_items
    for i in a:
    print(i) #通过循环获取a里的数据
    dict.fromkeys('a',10) #返回{'a': 10}
    dict.fromkeys(['a',10])
    #返回{'a': None, 10: None}

     线性回归:

    import numpy as np
    import statsmodels.api as sm
    import statsmodels.formula.api as smf
    dat = sm.datasets.get_rdataset("Guerry", "HistData").data
    results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()
    print(results.summary())

     onehot编码转换:

    from sklearn import preprocessing
    enc = preprocessing.OneHotEncoder()
    enc.fit(a[['A','B']])
    enc.transform(a[['A','B']]).toarray()
    print(enc.transform(a[['A','B']]).toarray())

     assert断言的作用:

    用于判定某布尔值必须为真,如果发生异常说明表达式为假,以如下代码为例

    assert 1==1   #未返回值
    assert 1==2   #返回错误
  • 相关阅读:
    JAVA——汉诺塔
    JAVA与MySQL连接并显示、管理表格实例
    2019沈阳网选——模拟
    CodeforcesRound#553(Div. 2)(A-D题解)
    CodeforcesRound#551(Div. 2)(A-C题解)
    CodeforcesGlobalRound2(Div.2)ABCE题解
    EducationalCodeforcesRound62(Div. 2)(A-D题解)
    博客搬家
    文本分类基本流程
    卡方检验应用-特征选择
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/7890004.html
Copyright © 2011-2022 走看看