zoukankan      html  css  js  c++  java
  • python数据分析-数据准备

    pandas数据结构:

    series序列:存储一行或一列的数据,以及与此相关索引的集合。

    常用操作方法如下:

    from pandas import Series;
    
    #定义,可以混合定义
    x = Series(['a', True, 1], index=['first', 'second', 'third']);
    x = Series(['a', True, 1]);
    
    #访问
    x[1];
    #根据index访问
    x['second'];
    
    #不能越界访问
    x[3]
    
    #不能追加单个元素
    x.append('2')
    #追加一个序列
    n = Series(['2'])
    x.append(n)
    
    #需要使用一个变量来承载变化
    x = x.append(n)
    
    '2' in x
    
    #判断值是否存在
    '2' in x.values
    
    #切片
    x[1:3]
    
    #定位获取,这个方法经常用于随机抽样
    x[[0, 2, 1]]
    
    #根据index删除
    x.drop(0)
    x.drop('first')
    
    #根据位置删除
    x.drop(x.index[3])
    
    #根据值删除
    x['2'!=x.values]
    View Code

    DataFrame:存储多行多列的数据集合。

    常用操作方法如下:

    from pandas import DataFrame;
    
    df = DataFrame({
        'age': [21, 22, 23], 
        'name': ['KEN', 'John', 'JIMI']
    });
    
    df = DataFrame(data={
        'age': [21, 22, 23], 
        'name': ['KEN', 'John', 'JIMI']
    }, index=['first', 'second', 'third']);
    
    df
    
    #按列访问
    df['age']
    #按行访问
    df[1:2]
    
    #按行列号访问
    df.iloc[0:1, 0:1] 
    
    #按行索引,列名访问
    df.at[0, 'name']
    
    #修改列名
    df.columns
    df.columns=['age2', 'name2']
    
    #修改行索引
    df.index
    df.index = range(1,4)
    df.index
    
    #根据行索引删除
    df.drop(1, axis=0)
    #默认参数axis=0
    #根据列名进行删除
    df.drop('age2', axis=1)
    
    #第二种删除列的方法
    del df['age2']
    
    #增加行,注意,这种方法,效率非常低,不应该用于遍历中
    df.loc[len(df)] = [24, "KENKEN"];
    
    #增加列
    df['newColumn'] = [2, 4, 6, 8];
    View Code

    程序结构:

    分别有顺序结构、选择结构、循环结构。

    选择结构例子如下:

    """
    if 判断条件:
        执行语句……
    else:
        执行语句……
    """
    
    flag = False
    name = 'luren'
    if name == 'python':         # 判断变量否为'python'
        flag = True          # 条件成立时设置标志为真
        print('welcome boss')    # 并输出欢迎信息
    else:
        print(name)              # 条件不成立时输出变量名称
        
        
        
    num = 5     
    if num == 3:            # 判断num的值
        print('boss')        
    elif num == 2:
        print('user')
    elif num == 1:
        print('worker')
    elif num < 0:           # 值小于零时输出
        print('error')
    else:
        print('roadman')     # 条件均不成立时输出
    View Code

    循环结构例子如下:

    # -*- coding: utf-8 -*-
    """
    Created on Sat Sep 26 18:55:41 2015
    
    @author: TBKKEN
    """
    
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    from pandas import Series;
    from pandas import DataFrame;
    
    for i in range(10):
        print('现在是: ', i)
    
    for i in range(3, 10):
        print(i)
    
    #遍历字符串
    for letter in 'Python':
       print ('现在是 :', letter)
    
    #遍历数组
    fruits = ['banana', 'apple',  'mango']
    
    for fruit in fruits:
       print ('现在是 :', fruit)
    
    #遍历序列
    x = Series(['a', True, 1], index=['first', 'second', 'third']);
    x[0];
    x['second'];
    x[2];
    
    for v in x:
        print("x中的值 :", v);
        
    for index in x.index:
        print("x中的索引 :", index);
        print("x中的值 :", x[index]);
        print("---------------------")
    
    #遍历数据框
    df = DataFrame({
        'age': Series([21, 22, 23]), 
        'name': Series(['KEN', 'John', 'JIMI'])
    });
    
    #遍历列名
    for r in df:
        print(r);
        
    #遍历列
    for cName in df:
        print('df中的列 :
    ', cName)
        print('df中的值 :
    ', df[cName]);
        print("---------------------")
    
    #遍历行,方法一
    for rIndex in df.index:
        print('现在是第 ', rIndex, '')
        print(df.irow(rIndex))
    
    #遍历行,方法二
    for r in df.values:
        print(r)
        print(r[0])
        print(r[1])
        print("---------------------")
    
    #遍历行,方法三
    for index, row in df.iterrows():
        print('', index, ' 行:')
        print(row)
        print("---------------------")
        
    View Code

    向量化计算:

    定义:向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量。

    # -*- coding: utf-8 -*-
    """
    Created on Wed Mar 23 10:13:56 2016
    
    @author: TBKKEN
    """
    #生成一个整数的等差序列
    #局限,只能用于遍历
    r1_10 = range(1, 10, 2)
    
    for i in r1_10:
        print(i)
    
    r1_10 = range(0.1, 10, 2)
    
    
    #生成一个小数的等差序列
    import numpy
    numpy.arange(0.1, 0.5, 0.01) 
    
    r = numpy.arange(0.1, 0.5, 0.01) 
    
    #向量化计算,四则运算
    r + r
    r - r
    r * r
    r / r
    
    #长短不一时
    r + 1
    
    #函数式的向量化计算
    numpy.power(r, 5)
    
    #向量化运算,比较运算
    r>0.3
    #结合过滤进行使用
    r[r>0.3]
    
    #矩阵运算
    numpy.dot(r, r.T)
    
    sum(r*r)
    
    from pandas import DataFrame
    df = DataFrame({
        'data1': numpy.random.randn(5),
        'data2': numpy.random.randn(5)
    })
    
    df.apply(lambda x: min(x))
    
    df.apply(lambda x: min(x), axis=1)
    
    #判断每个行,值是否都大于0
    df.apply(lambda x: numpy.all(x>0), axis=1)
    #结合过滤
    df[df.apply(lambda x: numpy.all(x>0), axis=1)]
    View Code

     

  • 相关阅读:
    区块链|学习笔记(三)
    左神算法之获取栈中最小值
    23种设计模式之适配器模式
    二叉树序列化和反序列化
    归并排序
    通过集合构建RDD或者DataFrame
    内核源码分析——shuffle
    问题
    函数参数
    问题记录
  • 原文地址:https://www.cnblogs.com/qiuyuyu/p/9143736.html
Copyright © 2011-2022 走看看