商业数据分析 扫二维码继续学习

序列:列表、元组、字符串

[ ]表示序列

Python也有序列套序列的操作

 

  • 序列索引

编号从0开始递增,从-1开始抵减

序列不仅可以用变量名索引,也可以直接用序列值索引

  • 序列切片

分片操作,通过[ ]相隔的两个索引来实现,取左不取右

Python分片操作的时候,要确保起点在终点的左侧,倒着取数,取不到

如果要取到包括序列结尾的元素,可以置空最后一个索引;同理也可以置空第一个索引和全部索引

步长

 

序列加、减、乘

[展开全文]

数据类型:数字、字符串、列表、元组、字典、集合

列表是用的最多的数据类型

 

数字:

整数(int)长整数(long)浮点实数(float)复数(complex)

Python数字的上限是2的31次方

在整数的结尾写大写L,可以表示长整数

浮点数可能会有四舍五入的误差

复数要用cmath的模块处理

[展开全文]

数字 字符串 列表 元组 字典 集合

容器:序列(列表和元组) 

映射(字典)

其他(集合)

 

python 可以表达哪些数字

1、整数 int 有符号整数 

十六进制(0x 开头 0-9 a-f)和八进制(0 开头 0-7)

2、long 长整数 ,L在末尾表示。

普通整数不能大于2^31

3、浮点数(小数)

e代替10

存储不准确

4、复数

实数和虚数的和

 

 

[展开全文]

读写模式问题

  • 按字节处理:对每个字节进行循环,处理
  • 按行处理:逐行处理,尤其是excel数据。.redline():读入一行
  • 读取所有内容进行处理:把IO的次数降到最低。读取一次,提高效率。局限:文件过大的话内存会不够用,效率反而降低。
  • 使用fileinput实行行迭代
  • 使用文件迭代器进行迭代:
[展开全文]

文件对象的基本方法

读和写

  • .read:读。参数:读几个字符。不指定:从当前读到文件结尾。
  • .write:只能写字符串
  • 相对路径:不是从C盘开始找的(本机),而是从.py当前路径中寻找(移植给别人依然有效)。如果.\data\somefile.txt从与.py同级的data文件夹中寻找somefile.txt。如果..\data\somefile.txt从.py上一级的data文件夹中寻找somefile.txt。返回值:写入的字符长度。分辨w与a。
  • .close():有open一定有close,配对使用要求。close可以清空缓冲区,存入内存或硬盘中。

 文件打开

  • with语句:文件在语句结束后会自动关闭,即使有异常也不会报错。
[展开全文]

函数的作用域

  • 局部变量:储存在函数的临时空间中,作用在函数作用过程中。
  • 全局变量
  • 在函数体中可以使用全局变量(不提倡)。但是当命名冲突时,首先使用局部空间的。
  • 如果在重名时想要先找全局变量,使用globals()(系统自建全局变量字典)。
  • 潜在风险:外部可以改变全局变量。
  • 作用周期:函数运行过程中 
[展开全文]

函数的参数

  • 函数的参数是形式上的参数(形参,是值拷贝),值传进来了,但是变量没有放进来。
  • 函数运行时,在一片临时区域里,函数算完了,临时区域就被删除了。
  • n当作变量。

     

  • 把n当作列表,操作针对列表,n储存的是列表的储存地址。改变时就能改变列表的内容。

参数的类型

  • 位置参数:严格按照位置一一匹配。位置很重要很敏感。

  • 关键字参数:位置不敏感。(调用方式:调用时告知关键字,以关键字匹配)参数名和值一点更要对应。

  • 定义关键字参数:为参数提供默认值。可以用位置参数调用,也可以用关键字参数调用。

  • 位置参数和关键字参数混用。位置参数在前面,关键字在后面。

参数收集

  • 输入任意多个位置参数:带*号:收集其余的位置参数(变为元组)

  • 输入任意多个关键字参数:带**号:收集其余的关键字参数(变为字典)

  • 执行相反的操作:在调用阶段使用*或**:将元组或字典拆成位置参数或关键字参数。

 

[展开全文]

基本运算符

  • 算术运算符,除法操作后是浮点数
  • 比较运算符

  • 赋值运算符

  • 按位运算符(异或:同为0,异为1)

  • 逻辑运算符

  • 成员运算符

  • 标识运算符:比较两个对象的内存位置

  • 运算符优先级

[展开全文]

集合(set)

  • 不能有相同元素
  • 无序的
  • 求交集、并集,对应运算符

  • 集合是可变的,集合中的元素不可变——集合不能套集合(.add):添加元素

  • frozenset:不可变的集合

集合的其他操作

  • .add:作为一个元素添加
  • .update:作为字符串拆开添加
[展开全文]

文件与流

  • 输入:键盘、外存(流)
  • 输出:屏幕、外存(流)

打开文件

  • open函数:打开硬盘中指定的文件。参数:file文件的路径,mode打开的模式,buffering设不设置缓冲,encoding编码。文件路径不能省略。
  • 若文件不存在:
  • 打开文件模式(mode)。r:只读模式,不可写入数据。w:写模式。a:追加,写入时从文件尾开写。b:打开图片、视频等。r+(光标在文件开头,读写都是从光标开始读写)/w+(覆盖原文件) /a+(光标在文件最后,读写都是从光标开始读写):可读可写,可以其他的用+。
  • 创建新文件:用w模式打开
  • import os                                        os.chdir:改变当前路径                      os.getcwd:查找当前路径

缓冲

  •  先将要写入的数据存到一个地方,在一次性向文件中写。提高速度。
  • 大于1的数字:声明缓冲区的大写。用flush或close清空缓冲区,更新硬盘数据。
  • 负数:不使用缓冲区

编码

  • import sys sys.getdefaultencoding()得到当前系统默认的编码格式。 
[展开全文]

函数

  • 斐波那契数列

创建函数

  • callable:是否可以调用,判断是否是一个函数
  • 函数定义:def:函数创建的语句。return:函数的返回值,函数执行的效果。           

  • 斐波那契数列的函数。注意是否有返回值。
  • 名字随便起,不要和系统内建函数重合。
  •  

记录函数

  • 定义函数时一定要给函数辅以解释,“#”或添加文档字符串。 
  • 阅读记录文档:"__doc__"__代表这是一个特殊属性。
  • “help”函数获取文档字符串。

返回None的函数 

  • return:函数的返回值,标志着函数结束。一定要写return,其实return后啥也没有(返回None)。
[展开全文]

排序算法

  • 常见的混合应用:常见八大排序算法

  • 评价:时间复杂度&空间复杂度

冒泡排序

  • 依次比较,保证右边始终大于左边,一轮结束后最右侧的是序列的最大排序。
  • 函数

[展开全文]

并行迭代:多个序列同时迭代

  • 强行控制
  • zip函数:打包,建立对应关系。变成可迭代对象,要用两个变量取值。zip函数可以处理不同长度的列表,以最短的列表拼接。

编号迭代

  • 不用编号迭代,寻找对象的索引位置。
  • 编号迭代的格式。enumerate函数:建立项与项的位置的对应关系。
 
[展开全文]

递归函数

  • 自己调用自己的函数。
  • 先想清楚停止的位置。
  • 计算n的阶乘的代码。
  • 计算幂的代码
  • 二元查找
  • 快速排序:排序效率最高的一种方法。

    原理图示:

    快速排序的递归写法:

[展开全文]

列表

  • 可变的(序列中唯一可以改值)
  • 专门函数和方法
操作
  • list函数:序列类型转换为列表
  • 元素赋值
  • 不能越界索引(list index out of range)
  • 删除:del语句(位置),remove函数(值)(从头到尾删除第一个要求的值)

  • 分片插入、删除、赋值

  • .append函数:在列表后增加(嵌套)
  • .count函数:计数(元素)

  • .extend函数:末尾增加列表,改变原有列表
  • .index函数:索引(找第一个返回的位置)

  • .insert(index,element)函数:插入
  • .reverse函数:反向存放
  • .sort函数:排序(参数)

  • sorted函数:排序(ASCII码)

有返回值VS无返回值

“.”的意思:列表的独有方法

“[]”与“()”的区别:[]表示列表或者列表变量,其他都要用()

[展开全文]
范思雅 · 11-13 · 列表 0

跳出循环

  • break:条件完成执行一次就结束循环。只能结束包含它的最内层循环。
  • continue:结束这一次循环后面的内容,循环从头再开始。
  • while True/break:可以结束的无限循环。

轻量级循环: 

  • pass语句:处理空代码块
[展开全文]

循环

  • while循环:对循环次数没有预知。如果while后的条件布尔值为真,就执行下面的语句块,在返回while行。如果为假,就停止循环。

  • for循环:知道循环次数有几次,例如与列表结合。隐藏了向前移动一个位置的操作。for 循环还可以与range函数结合,完成轻体量的循环。for循环还可以遍历字典。

[展开全文]

条件与循环

语句块

  • 用:开头,多行缩进的代码。多行代码同时执行。

布尔变量 

  • 表达为True(1)或False(0),天然二分支。
  • 布尔表达式为假的值:False、None、0、""、()、[]、{}
  • 可以用bool函数将其他类型数据转化为布尔型的
  • 两个假值不一定相等(数据类型不一样)

 条件和条件语句

  • if语句:条件执行。if后的布尔值如果是True,就执行后面的语句块。
  • else语句:如果第一个语句块没有执行(布尔值为False),就执行else后的语句块。如果第一个语句块执行了(布尔值为True),else后的语句块就跳过。
  • elif函数:表达三分支及以上。elif是else if的缩写。
  • if语句嵌套if语句实现多分支

断言 

  • assert函数:要求某些条件必须为真。作用:检查函数属性是,作为初期测试和调试过程中的辅助条件。成立无结果,不成立报错。
[展开全文]

字符串和编码

字符编码:

  • ASCII:问题是只能表达256个字符
  • MBCS
  • Unicode:用三个比特位编码
  • UTF-8:尽量压缩
  • python的使用字符编码声明:          # coding: UTF-8

字符串:用绿色高亮,用‘’或“”圈出来。

  • 长字符串:用三个单引号或双引号代替普通引号。
  • 原始字符串:转义符:“\”把斜线后的字符变成第二语义。“\”可以对“\”本身转义。如果在字符前加r,声明为原始字符串。原始字符串结尾不能有\。

     

字符串的基本操作

  • 序列的所有操作。但是字符串不可变。
[展开全文]
任课老师
  • 中国人民大学商学院教授

    张瑾,中国人民大学商学院副院长,教授,博士生导师。分别于2013年、2009年、2006年获清华大学管理学博士、工学硕士和工学学士学位。获教育部高等学校科学研究优秀成果奖、教育部博士研究生学术新人奖、北京市哲学社会科学优秀成果二等奖、北京市优秀学位论文优秀指导教师、北京市优秀博士毕业生、中国信息经济学会理论贡献奖,中国人民大学教学优秀奖,清华大学优秀博士论文奖等荣誉。在国内外重要学术期刊与会议上发表学术论文三十余篇,其中四篇为管理学国际顶级期刊(UTD 24)论文。主持三项国家自然科学基金项目,其中一项在基金委后评估中被评为特优,并带领团队在汽车、电信、传媒、核电、互联网等行业完成多个政府和企业课题。主要教学与研究领域包括人工智能与数字经济,大数据分析与管理,机器学习与商务智能等