本节概要

- 数据类型

- 数据结构

- 数据的常用操作方法


数据类型

基础铺垫

定义

  • 我们搞数据时,首先要告诉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对象
  1. from pandas import Series
  • 得到系列对象:使用Series对象的构造函数,把一个数组作为参数传入
  1. x=Series(['a',True,1])

操作

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

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

特别注意:

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

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

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

DataFrame(数据框)

定义

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

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

如何定义一个系列

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

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

操作

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

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

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

  • 修改行索引,index属性

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

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


向量化(数组)运算

pandas是以系列和数据框为基本运算对象,讲到这,有朋友会问了,jacky,我记得你讲python基础时说过,list 容器也有“类似于”pandas或numpy中数组的功能,那为什么我们还要学panda和numpy呢?

拿numpy举例来说,numpy中基本的运算对象为数组,numpy数组在数值运算方面的效率要远远,远远优于Python提供的list容易,并且使用numpy可以在代码中省区很多的循环语句,因此其代码比等价的Python代码更为简洁。

更重要的,或说更加实操的区别是:两者的输出结果在形式上会有明显的区别,numpysum()函数的输出不包含逗号,但是list容器一定是包含括号的,这点在数据可视化时会有明显的不同。

代码中尽可能避免显式for循环

过早的优化是魔鬼

向量化运算非常优美和高效,所以我们尽量使用向量化计算


基础课程回顾:

range函数用法

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

用range函数生成的等差数列只能是整数,用 for 循环才能将它输出来,只能用于遍历

接下来我们用numpy包中arrange方法,该方法生成的就是一个数组对象,而且可以使用小数进行生成。

四则运算

函数

  • 使用numpy的乘方函数power,3次方

比较运算

矩阵运算

是一种特殊的向量运算,它的运算规则可以结合线性代数看一下

  1. numpy.dot(r,r.T)
  2. sum(r*r)

数据框的向量化运算

  1. #生成一个随机数的数据框
  2. from pandas import DataFrame
  3. df=DataFrame({
  4. 'data1':numpy.random.randn(5),
  5. 'data2':numpy.random.randn(5)
  6. })
  7. #找出每一列的最小值
  8. df.apply(min)

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

第一章:Python数据分析前的基础铺垫的更多相关文章

  1. [Python笔记][第一章Python基础]

    2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...

  2. 第一章 了解Web及网络基础

    第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...

  3. python数据分析02语法基础

    在我来看,没有必要为了数据分析而去精通Python.我鼓励你使用IPython shell和Jupyter试验示例代码,并学习不同类型.函数和方法的文档.虽然我已尽力让本书内容循序渐进,但读者偶尔仍会 ...

  4. 第一章python 简介

    python语言是目前最流行的编程语言之一,在笔者写这篇文章的前一周,2018年的IEEE的编程语言排行出来了,python又雄踞第一. Python 强势霸榜第一名!排名第二的 C++ 得分是 98 ...

  5. 第一章 Python程序语言简介

    第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...

  6. 零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  7. 第一章 Python 基础

    1. 为什么学习 Python? 答题路线:a.python的优点,b.python的应用领域广 具体: 优点 1.python语法非常优雅,简单易学 2.免费开源 3.跨平台,可以自由移植 4.可扩 ...

  8. Python笔记·第一章—— Python基础(一)

    一.Python的简介 1.Python的由来与版本 1.1 python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文 ...

  9. ArcPy第一章-Python基础

    学习Arcpy,从零开始积累.1.代码注释: python中,说明部分通常使用注释来实现: 方式: # 或者 ## + 注释部分内容2. 模块导入: 方式: import Eg: import arc ...

随机推荐

  1. 转------深入理解--Java按值传递和按引用传递

    引言 最近刷牛客网上的题目时碰到不少有关Java按值传递和按引用传递的问题,这种题目就是坑呀,在做错了n次之后,查找了多方资料进行总结既可以让自己在总结中得到提高,又可以让其他人少走弯路.何乐而不为? ...

  2. MVC方式使用EasyUI - 搭建环境

    _Layout.cshtml <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ ...

  3. CentOS7安装CDH 第五章:CDH的安装和部署-CDH5.7.0

    相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...

  4. python采集websocket实时数据

    之前大部分的数据采集基本都是http的,也一直对如何采集websocket的实时数据有疑问,不知道入从哪里入手,一筹莫展,今天在知乎上看到了一篇采集websocket的文章,讲的很透彻 终于把这个疑问 ...

  5. 熟记这些python内置函数,你离大佬就不远了

    python内置了很多函数,方便我们在写程序的时候调用,在ython 2.7 的所有内置函数共有80个.熟练记住和使用这些内置函数,将大大提高写Python代码的速度和代码的优雅程度. 以下代码示例用 ...

  6. EditPlus使用技巧

    1.p{$$}*10  按ctrl+E  自动 填写10行 P标签.  $表示数字,$$表示2位数...   p{b$}*10 2.cltr +j 复制当前行. 3.自动填充开启. --------锚 ...

  7. Go语言中的defer

    可以用作一些资源的释放. 1.在一个函数内的defer执行顺序是先写的后执行,后写的先执行(遵循栈结构) func DeferTest1(){ defer fmt.Println("我是 d ...

  8. Redis单实例数据迁移到集群

    环境说明 单机redis redis集群 192.168.41.101:7000 master 192.168.41.101:7001 master 192.168.41.102:7000 maste ...

  9. WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)

    WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...

  10. vue param和query两种传参方式

    1.传参方式 query传参方式 this.$router.push({ path: "/home", query: {code:"123"} }) param ...