zoukankan      html  css  js  c++  java
  • 第一章:Python数据分析前的基础铺垫

    本节概要

    - 数据类型

    - 数据结构

    - 数据的常用操作方法


    数据类型

    基础铺垫

    定义

    • 我们搞数据时,首先要告诉Python我们的数据类型是什么
      • 数值型:直接写一个数字即可
      • 逻辑型:True,False(首字母大写)
      • 字符型:单引号、双引号、三引号

    赋值

    • 用等号给变量贴标签

    变量-赋值的对象是变量

    • 命名规则
    • 命名规则

    逻辑型(Logical)

    布尔值:只有两种取值(0和1,True和False)

    运算规则:

    运算符 注释 规则
    & 一个为假,结果为假
    一个为真,结果为真
    not 非真为假,非假为真

    数值型(Numeric)

    实数

    运算规则

    • 加、减、乘、除

    字符型(Character)

    如何定义字符串-单引号、双引号、三引号


    数据结构

    引言:为什么要将数据类型?
    前面的逻辑型、数值型、字符型都是针对一个数据来讲的;
    我们要研究现实问题时,数据往往是以集合的形式出现的

    如何理解?

    有关联的数据维度集合

    • 数据结构是一个理论性很强的知识点,但是这里我们不要纠结过多的原理,因为它真的很简单,可以这样理解,我们工作中大多EXCEL和SQL中有行和列的数据表格,都可以看作是数据结构的集合

    • 学python数据分析的朋友,一定要有SQL基础,我建议学Mysql,理由很简单,facebook、淘宝、京东、微博全都是用的mysql

    Pandas中的两种数据结构

    Series(系列)

    定义

    系列是用于存储一行或者一列的数据,以及与之相关的索引的集合

    index 姓名
    0 数据分析-jacky
    1 李嘉诚
    2 扎克伯格
    • 系列可以理解为Excel表格一列的数据,只是这一列是没有列名的,因为它只有一列,不需要列名。

    • 索引,类同于数据库,我们可以通过索引(index)对用的值,访问到数组(姓名)的值。

    • 在Pandas 中,默认索引都是从0开始的。

    如何定义一个系列

    • 从pandas包中导入Series对象
    from pandas import Series
    • 得到系列对象:使用Series对象的构造函数,把一个数组作为参数传入
    x=Series(['a',True,1])

    默认了索引为0、1、2

    这里写图片描述

    操作

    • 往一个定义好的数据中增加数据

    • 系列的append方法,只能增加系列,不能增加单个值

    这里写图片描述

    特别注意:

    n=Series(['9'])#要加引号;
    x.append(n)#只会返回到一个新的序列,并不会返回到变量x
    x=x.append(n)#特别关键的一步,这样才真正的给x变量增加了数据

    x.drop(0)#根据索引删除
    x.drop(x.index[3])#根据位置删除
    x['9'!=x.values]#使用保留的方法,把不是要删除的数据保留下来

    '9'in x.values #判断9这个值是否存在
    x[0:2]  #切片
    x[[1,2,0]]#这个比较重要,定位获取,用于随机抽样

    DataFrame(数据框)

    定义

    数据框是用来存储多行或多列的数据集合

    index age name
    0 19 Mr.liu
    1 30 Jacky
    2 42 Andy
    • 可以理解为Excel中的表格

    如何定义一个系列

    • 首先生成一个数据框,导入pandas中的数据框类
    from pandas import DataFrame
    • 使用DataFrame对象的构造函数,输入一个字典来构造数据框,这个数据框的写法,就是以列名作为Key,列数据以数组的方式在后面输入即可。
    df=DataFrame(
        data={
        'age':[19,30,42],
        'name':['Mr.liu','Jacky','Andy']
        },
        index=['0','1','2']
    )

    这里写图片描述

    • 做自定义索引与系统是形同的

    操作

    • 通过loc属性
    df.loc[len(df)]=[100,'zhuyuanlu']#增加行
    df['newColumn']=[111,222,333]

    • drop属性,根据axis轴参数,来确定是删除行,还是删除列,axis=0是行,axis=1是列
    df.drop('firs',axis=0) #删除行
    df.drop('age',axis=1) #删除列

    • 修改列名,查看columns属性,对columns属性重新赋值

    这里写图片描述

    • 修改行索引,index属性

    对于数据分析来说,增删改查,一定是查最重要

    df['age'] #按列访问,访问一列
    df[['age','name']]#按列访问,访问多列
    df[0:1] #按行访问,切片
    df.loc[['firs','seco']]#按行索引
    df.iloc[1:2,1:2]#按行列号访问
    df.at['their','age']
    

    这里写图片描述


    向量化(数组)运算

    pandas是以系列和数据框为基本运算对象,讲到这,有朋友会问了,jacky,我记得你讲python基础时说过,list 容器也有“类似于”pandas或numpy中数组的功能,那为什么我们还要学panda和numpy呢?
    拿numpy举例来说,numpy中基本的运算对象为数组,numpy数组在数值运算方面的效率要远远,远远优于Python提供的list容易,并且使用numpy可以在代码中省区很多的循环语句,因此其代码比等价的Python代码更为简洁。
    更重要的,或说更加实操的区别是:两者的输出结果在形式上会有明显的区别,numpysum()函数的输出不包含逗号,但是list容器一定是包含括号的,这点在数据可视化时会有明显的不同。

    代码中尽可能避免显式for循环
    过早的优化是魔鬼
    向量化运算非常优美和高效,所以我们尽量使用向量化计算


    基础课程回顾:

    range函数用法

    • range函数的参数:
    #第一个参数是for循环变量开始的值,第二个是参数是上限,但不含它,也就是循环停止的数据
    for i in range(12,16):
        print(i)
    • 以上代码显示:12 13 14 15
    range()函数也可以有第三个参数。前两个参数分别是起始值和终止值,第三个参数是“步长”。步长是每次迭代后循环变量增加的值。
    for i range(0,10,2):
        print(i)
    • 以上代码显示:0 2 4 6 8

    用range函数生成的等差数列只能是整数,用 for 循环才能将它输出来,只能用于遍历
    接下来我们用numpy包中arrange方法,该方法生成的就是一个数组对象,而且可以使用小数进行生成。

    四则运算

    这里写图片描述

    函数

    这里写图片描述

    • 使用numpy的乘方函数power,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(min)

    这里写图片描述

    • 按列最小值进行遍历,默认axis=0
    #找出每行最小值
    df.apply(min,axis=1)

    这里写图片描述

  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/7786597.html
Copyright © 2011-2022 走看看