python流程控制语句案例(python中控制流语句)

http://www.itjxue.com  2023-03-27 17:03  来源:未知  点击次数: 

Python基本语法都有哪些?

1.关于编码:

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:

# -*- coding: cp-1252 -*-

2.标识符:

第一个字符必须是字母表中字母或下划线,其他的部分由字母、数字和下划线组成。

标识符对大小写敏感。

在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

3.保留字:

保留字即关键字,我们不能把它们用作任何标识符名称。

Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

代码:

import keyword

keyword.kwlist

结果:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

4.关于注释:

单行注释以 # 开头

多行注释可以用多个 # 号,还有 ''' 和 """

5.缩进与多行语句:

Python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句,例如:

代码:total = item_one + \

item_two + \

item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\),例如:

代码:total = ['item_one', 'item_two', 'item_three',

'item_four', 'item_five']

6.数字(Number)类型:

Python中数字有四种类型:整数、布尔型、浮点数和复数。

int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

bool (布尔), 如 True。

float (浮点数), 如 1.23、3E-2

complex (复数), 如 1 + 2j、 1.1 + 2.2j

7.字符串:

python中单引号和双引号使用完全相同。

使用三引号('''或""")可以指定一个多行字符串。

转义符 '\'

反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。

按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。

字符串可以用 + 运算符连接在一起,用 * 运算符重复。

Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

Python中的字符串不能改变。

Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

字符串的截取的语法格式如下:变量[头下标:尾下标:步长]

代码示例:

#!/usr/bin/python3

str='Runoob'

print(str) # 输出字符串

print(str[0:-1]) # 输出第一个到倒数第二个的所有字符

print(str[0]) # 输出字符串第一个字符

print(str[2:5]) # 输出从第三个开始到第五个的字符

print(str[2:]) # 输出从第三个开始后的所有字符

print(str * 2) # 输出字符串两次

print(str + '你好') # 连接字符串

print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符

print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

8.空行:

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

9.等待用户输入input:

执行下面的程序在按回车键后就会等待用户输入:

input("\n\n按下 enter 键后退出。")

以上代码中 ,"\n\n"在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出。

10.同一行显示多条语句:

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

import sys; x = 'runoob'; sys.stdout.write(x + '\n')

11.代码组:

缩进相同的一组语句构成一个代码块,我们称之代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句(clause)。

12.Print输出:

Print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

代码:

x="a"

y="b"

# 换行输出

print( x )

print( y )

# 不换行输出

print( x, end=" " )

print( y, end=" " )

13.import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

代码:

导入 sys 模块

import sys

print ('命令行参数为:')

for i in sys.argv:

print (i)

print ('\n python 路径为',sys.path)

导入 sys 模块的 argv,path 成员

from sys import argv,path # 导入特定的成员

print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

14.命令行参数:

很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息:

代码:

$ python -h

usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...

Options and arguments (and corresponding environment variables):

-c cmd : program passed in as string (terminates option list)

-d : debug output from parser (also PYTHONDEBUG=x)

-E : ignore environment variables (such as PYTHONPATH)

-h : print this help message and exit

[ etc. ]

15.一个有用的函数:help( )

调用 python 的 help() 函数可以打印输出一个函数的文档字符串:

# 如下实例,查看 max 内置函数的参数列表和规范的文档

help(max)

……显示帮助信息…… 按下 : q 两个按键即退出说明文档

如果仅仅想得到文档字符串:

print(max.__doc__) # 注意,doc的前后分别是两个下划线

max(iterable, *[, default=obj, key=func]) - value

max(arg1, arg2, *args, *[, key=func]) - value

With a single iterable argument, return its biggest item. The

default keyword-only argument specifies an object to return if

the provided iterable is empty.

With two or more arguments, return the largest argument.

用python编写程序判断闰年?

闰年指的是再整百年时能被400整除的和非整百年能被4整除的,那么代码就可以使用流程控制语句if进行判断,算术运算符取余计算来完成这个程序。

以下实例用于判断用户输入的年份是否为闰年:

# -*- coding: UTF-8 -*-

year = int(input("输入一个年份:"))

if (year % 4) == 0:

if (year % 100) == 0:

if (year % 400) == 0:

print("{0}是闰年".format(yeat)) # 整百年能被400整除的是闰年

else:

print("{0}不是闰年".format(year))

else:

print("{0}是闰年".fomat(year)) # 非整百年能被4整除的为闰年

else:

print("{0}不是闰年".format(year))

我们也可以使用内嵌if语句来实现:

执行以上代码输出结果为:

输入一个年份:2000

2000 是闰年

输入一个年份:2011

2011 不是闰年

Python程序开发之简单小程序实例(3)-打印99乘法口诀表

Python程序开发之简单小程序实例

(3)-打印99乘法口诀表

一、项目功能

在屏幕中打印格式化的九九乘法口诀表。

二、项目分析

按九九乘法口诀的运算顺序,打印的口诀表共有9行9列,第1行只有1列,第2行有2列……,第9行共有9列,如下所示:

1 1

1 2 2 2

1 3 2 3 3 3

……

……

1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 9

要按格式控制输出,需定义2个循环,其中一个循环(我们称其为外循环,在其内定义变量i)嵌套另一个循环(我们称其为内循环,在其内定义变量j),外循环(变量i)控制行,循环次数大于等于1且小于10,内循环(变量j)控制列,循环次数取决于外循环变量i的值。

三、程序源代码

#!/usr/bin/python3.6

# -*- coding: GBK -*-

print("九九乘法口诀表")

for i in range(1, 10):

print()

for j in range(1, i+1):

print ("%d*%d=%d" % (j, i, i*j), end=" " )

四、代码解释:

在程序的第一行为引用python版本,本实例为python3.6

第二行是程序编码引用,因为在程序中包含有中文字符,所以必须引用GBK,否则就会报错。

第三行为输出标题“九九乘法口诀表”

第四行至第七行为程序主体,由两个循环嵌套组成,在循环内的第五行,为一个控制行格式输出语句print(),用于换行操作。

五、运行后的输出结果

下一篇:《Python程序开发之简单小程序实例(4)》

发现公司里的大数据开发挣得很多,想转行,

转行这个词汇,一直是职场上此起彼伏的一个热门话题,相信很多朋友都想过或已经经历过转行。工作可谓是我们生存乃至生活的主要收入来源,谁都希望拥有一份高薪又稳定的工作,以此来改善自己的生活和实现自己的大大小小的梦想!但又担心转行后的工作待遇达不到自己的预期,顾虑重重……

不少想进入大数据分析行业的零基础学员经常会有这样一些疑问:大数据分析零基础应该怎么学习?自己适合学习大数据分析吗?人生,就是在不断地做选择,然后在这个选择过程中成长,让自己从一棵小树苗变成参天大树。就是我们每个对大数据充满幻想终于下定决心行动的学员的选择,我们给了自己4个月的时间,想要在大数据分析这个领域汲取养分,让自己壮大成长。

【明确方向】

通过国家的战略规划,看到BAT的大牛们都在大数据行业布局,新闻媒体追捧这大数据分析行业的项目和热点,我想如果我还没有能力独立判断的时候,跟着国家政策和互联网大佬们的步调走,这应该是错不了的。

【付诸行动】

明确了方向之后,我就整装待发,刚开始是在网络上购买了很多的视频教程,也买了很多书籍,但是最大的问题就在于,我不知道怎么入手,没关系,有信心有耐心肯定能战胜困难,我坚持了一个月,学习的节奏越来越乱,陆陆续续出现了很多的问题,没人指导,请教了几个业内的朋友,但对方工作繁忙,问了几次之后就不好意思了,自学陷入了死循环。

意识到我学习效率的低下,以及无人指导的问题想想未来的康庄大道,咬咬牙告诉自己,一定好好好学,不然就浪费太多时间最后还会是一无所获。最后找到组织(AAA教育)一起学习进步!

大数据分析零基础学习路线,有信心能坚持学习的话,那就当下开始行动吧!

一、大数据技术基础

1、linux操作基础

linux系统简介与安装

linux常用命令–文件操作

linux常用命令–用户管理与权限

linux常用命令–系统管理

linux常用命令–免密登陆配置与网络管理

linux上常用软件安装

linux本地yum源配置及yum软件安装

linux防火墙配置

linux高级文本处理命令cut、sed、awk

linux定时任务crontab

2、shell编程

shell编程–基本语法

shell编程–流程控制

shell编程–函数

shell编程–综合案例–自动化部署脚本

3、内存数据库redis

redis和nosql简介

redis客户端连接

redis的string类型数据结构操作及应用-对象缓存

redis的list类型数据结构操作及应用案例-任务调度队列

redis的hash及set数据结构操作及应用案例-购物车

redis的sortedset数据结构操作及应用案例-排行榜

4、布式协调服务zookeeper

zookeeper简介及应用场景

zookeeper集群安装部署

zookeeper的数据节点与命令行操作

zookeeper的java客户端基本操作及事件监听

zookeeper核心机制及数据节点

zookeeper应用案例–分布式共享资源锁

zookeeper应用案例–服务器上下线动态感知

zookeeper的数据一致性原理及leader选举机制

5、java高级特性增强

Java多线程基本知识

Java同步关键词详解

java并发包线程池及在开源软件中的应用

Java并发包消息队里及在开源软件中的应用

Java JMS技术

Java动态代理反射

6、轻量级RPC框架开发

RPC原理学习

Nio原理学习

Netty常用API学习

轻量级RPC框架需求分析及原理分析

轻量级RPC框架开发

二、离线计算系统

1、hadoop快速入门

hadoop背景介绍

分布式系统概述

离线数据分析流程介绍

集群搭建

集群使用初步

2、HDFS增强

HDFS的概念和特性

HDFS的shell(命令行客户端)操作

HDFS的工作机制

NAMENODE的工作机制

java的api操作

案例1:开发shell采集脚本

3、MAPREDUCE详解

自定义hadoop的RPC框架

Mapreduce编程规范及示例编写

Mapreduce程序运行模式及debug方法

mapreduce程序运行模式的内在机理

mapreduce运算框架的主体工作流程

自定义对象的序列化方法

MapReduce编程案例

4、MAPREDUCE增强

Mapreduce排序

自定义partitioner

Mapreduce的combiner

mapreduce工作机制详解

5、MAPREDUCE实战

maptask并行度机制-文件切片

maptask并行度设置

倒排索引

共同好友

6、federation介绍和hive使用

Hadoop的HA机制

HA集群的安装部署

集群运维测试之Datanode动态上下线

集群运维测试之Namenode状态切换管理

集群运维测试之数据块的balance

HA下HDFS-API变化

hive简介

hive架构

hive安装部署

hvie初使用

7、hive增强和flume介绍

HQL-DDL基本语法

HQL-DML基本语法

HIVE的join

HIVE 参数配置

HIVE 自定义函数和Transform

HIVE 执行HQL的实例分析

HIVE最佳实践注意点

HIVE优化策略

HIVE实战案例

Flume介绍

Flume的安装部署

案例:采集目录到HDFS

案例:采集文件到HDFS

三、流式计算

1、Storm从入门到精通

Storm是什么

Storm架构分析

Storm架构分析

Storm编程模型、Tuple源码、并发度分析

Storm WordCount案例及常用Api分析

Storm集群部署实战

Storm+Kafka+Redis业务指标计算

Storm源码下载编译

Strom集群启动及源码分析

Storm任务提交及源码分析

Storm数据发送流程分析

Storm通信机制分析

Storm消息容错机制及源码分析

Storm多stream项目分析

编写自己的流式任务执行框架

2、Storm上下游及架构集成

消息队列是什么

Kakfa核心组件

Kafka集群部署实战及常用命令

Kafka配置文件梳理

Kakfa JavaApi学习

Kafka文件存储机制分析

Redis基础及单机环境部署

Redis数据结构及典型案例

Flume快速入门

Flume+Kafka+Storm+Redis整合

四、内存计算体系Spark

1、scala编程

scala编程介绍

scala相关软件安装

scala基础语法

scala方法和函数

scala函数式编程特点

scala数组和集合

scala编程练习(单机版WordCount)

scala面向对象

scala模式匹配

actor编程介绍

option和偏函数

实战:actor的并发WordCount

柯里化

隐式转换

2、AKKA与RPC

Akka并发编程框架

实战:RPC编程实战

3、Spark快速入门

spark介绍

spark环境搭建

RDD简介

RDD的转换和动作

实战:RDD综合练习

RDD高级算子

自定义Partitioner

实战:网站访问次数

广播变量

实战:根据IP计算归属地

自定义排序

利用JDBC RDD实现数据导入导出

WorldCount执行流程详解

4、RDD详解

RDD依赖关系

RDD缓存机制

RDD的Checkpoint检查点机制

Spark任务执行过程分析

RDD的Stage划分

5、Spark-Sql应用

Spark-SQL

Spark结合Hive

DataFrame

实战:Spark-SQL和DataFrame案例

6、SparkStreaming应用实战

Spark-Streaming简介

Spark-Streaming编程

实战:StageFulWordCount

Flume结合Spark Streaming

Kafka结合Spark Streaming

窗口函数

ELK技术栈介绍

ElasticSearch安装和使用

Storm架构分析

Storm编程模型、Tuple源码、并发度分析

Storm WordCount案例及常用Api分析

7、Spark核心源码解析

Spark源码编译

Spark远程debug

Spark任务提交行流程源码分析

Spark通信流程源码分析

SparkContext创建过程源码分析

DriverActor和ClientActor通信过程源码分析

Worker启动Executor过程源码分析

Executor向DriverActor注册过程源码分析

Executor向Driver注册过程源码分析

DAGScheduler和TaskScheduler源码分析

Shuffle过程源码分析

Task执行过程源码分析

五、机器学习算法

1、python及numpy库

机器学习简介

机器学习与python

python语言–快速入门

python语言–数据类型详解

python语言–流程控制语句

python语言–函数使用

python语言–模块和包

phthon语言–面向对象

python机器学习算法库–numpy

机器学习必备数学知识–概率论

2、常用算法实现

knn分类算法–算法原理

knn分类算法–代码实现

knn分类算法–手写字识别案例

lineage回归分类算法–算法原理

lineage回归分类算法–算法实现及demo

朴素贝叶斯分类算法–算法原理

朴素贝叶斯分类算法–算法实现

朴素贝叶斯分类算法–垃圾邮件识别应用案例

kmeans聚类算法–算法原理

kmeans聚类算法–算法实现

kmeans聚类算法–地理位置聚类应用

决策树分类算法–算法原理

决策树分类算法–算法实现

时下的大数据分析时代与人工智能热潮,相信有许多对大数据分析师非常感兴趣、跃跃欲试想着转行的朋友,但面向整个社会,最不缺的其实就是人才,对于是否转行大数据分析行列,对于能否勇敢一次跳出自己的舒适圈,不少人还是踌躇满志啊!毕竟好多决定,一旦做出了就很难再回头了。不过如果你已经转行到大数据分析领域,就不要后悔,做到如何脱颖而出才是关键。因此本文给出一些建议,针对想要转行大数据分析行列且是零基础转行的小伙伴们,希望对你们有所裨益,也希望你们将来学有所成,不后悔,更不灰心!

相关推荐:

《转行大数据分析师后悔了》、《ui设计培训四个月骗局大爆料》、《零基础学大数据分析现实吗》、《大数据分析十八般工具》

Python程序开发之简单小程序实例(11)小游戏-跳动的小球

Python程序开发之简单小程序实例

(11)小 游戏 -跳动的小球

一、项目功能

用户控制挡板来阻挡跳动的小球。

二、项目分析

根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。

三、程序源代码

源码部分截图:

源码:

#!/usr/bin/python3.6

# -*- coding: GBK -*-

#导入相应模块

from tkinter import *

import random

import time

#自定义小球的类 Ball

class Ball:

# 初始化

def __init__(self,canvas,paddle,color):

#传递画布值

self.canvas=canvas

#传递挡板值

self.paddle=paddle

#画圆并且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

#小球的水平位置起始列表

start=[-3,-2,-1,1,2,3]

#随机化位置列表

random.shuffle(start)

self.x=start[0]

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存

self.canvas_width=self.canvas.winfo_width()

#根据参数值绘制小球

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)

#使得小球不会超出窗口

pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标

if pos[1]=self.canvas_heigh or(pos[3]=pad[1] and pos[2]=pad[0] and pos[2]

数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容,具体是怎么操作的?

最近,Analysis with Programming加入了Planet Python。我这里来分享一下如何通过Python来开始数据分析。具体内容如下:

数据导入

导入本地的或者web端的CSV文件;

数据变换;

数据统计描述;

假设检验

单样本t检验;

可视化;

创建自定义函数。

数据导入

1

这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:

import pandas as pd

# Reading data locally

df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')

# Reading data from web

data_url = ""

df = pd.read_csv(data_url)

为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。

END

数据变换

1

既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据(下图)

对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理

请点击输入图片描述

2

在R语言中,数据列和行的名字通过colnames和rownames来分别进行提取。在Python中,我们则使用columns和index属性来提取,如下:

# Extracting column names

print df.columns

# OUTPUT

Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')

# Extracting row names or the index

print df.index

# OUTPUT

Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')

3

数据转置使用T方法,

# Transpose data

print df.T

# OUTPUT

0 ? ? ?1 ? ? 2 ? ? ?3 ? ? 4 ? ? ?5 ? ? 6 ? ? ?7 ? ? 8 ? ? ?9

Abra ? ? ?1243 ? 4158 ?1787 ?17152 ?1266 ? 5576 ? 927 ?21540 ?1039 ? 5424

Apayao ? ?2934 ? 9235 ?1922 ?14501 ?2385 ? 7452 ?1099 ?17038 ?1382 ?10588

Benguet ? ?148 ? 4287 ?1955 ? 3536 ?2530 ? ?771 ?2796 ? 2463 ?2592 ? 1064

Ifugao ? ?3300 ? 8063 ?1074 ?19607 ?3315 ?13134 ?5134 ?14226 ?6842 ?13828

Kalinga ?10553 ?35257 ?4544 ?31687 ?8520 ?28252 ?3106 ?36238 ?4973 ?40140

... ? ? ? 69 ? ? 70 ? ? 71 ? ? 72 ? ? 73 ? ? 74 ? ? 75 ? ? 76 ? ? 77

Abra ? ? ... ? ?12763 ? 2470 ?59094 ? 6209 ?13316 ? 2505 ?60303 ? 6311 ?13345

Apayao ? ... ? ?37625 ?19532 ?35126 ? 6335 ?38613 ?20878 ?40065 ? 6756 ?38902

Benguet ?... ? ? 2354 ? 4045 ? 5987 ? 3530 ? 2585 ? 3519 ? 7062 ? 3561 ? 2583

Ifugao ? ... ? ? 9838 ?17125 ?18940 ?15560 ? 7746 ?19737 ?19422 ?15910 ?11096

Kalinga ?... ? ?65782 ?15279 ?52437 ?24385 ?66148 ?16513 ?61808 ?23349 ?68663

78

Abra ? ? ?2623

Apayao ? 18264

Benguet ? 3745

Ifugao ? 16787

Kalinga ?16900

Other transformations such as sort can be done using codesort/code attribute. Now let's extract a specific column. In Python, we do it using either codeiloc/code or codeix/code attributes, but codeix/code is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have

4

其他变换,例如排序就是用sort属性。现在我们提取特定的某列数据。Python中,可以使用iloc或者ix属性。但是我更喜欢用ix,因为它更稳定一些。假设我们需数据第一列的前5行,我们有:

print df.ix[:, 0].head()

# OUTPUT 0 ? ? 1243 1 ? ? 4158 2 ? ? 1787 3 ? ?17152 4 ? ? 1266 Name: Abra, dtype: int64

5

顺便提一下,Python的索引是从0开始而非1。为了取出从11到20行的前3列数据,我们有

print df.ix[10:20, 0:3]

# OUTPUT

Abra ?Apayao ?Benguet

10 ? ?981 ? ?1311 ? ? 2560

11 ?27366 ? 15093 ? ? 3039

12 ? 1100 ? ?1701 ? ? 2382

13 ? 7212 ? 11001 ? ? 1088

14 ? 1048 ? ?1427 ? ? 2847

15 ?25679 ? 15661 ? ? 2942

16 ? 1055 ? ?2191 ? ? 2119

17 ? 5437 ? ?6461 ? ? ?734

18 ? 1029 ? ?1183 ? ? 2302

19 ?23710 ? 12222 ? ? 2598

20 ? 1091 ? ?2343 ? ? 2654

上述命令相当于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。

6

为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet),我们使用drop属性,如下:

print df.drop(df.columns[[1, 2]], axis = 1).head()

# OUTPUT

Abra ?Ifugao ?Kalinga

0 ? 1243 ? ?3300 ? ?10553

1 ? 4158 ? ?8063 ? ?35257

2 ? 1787 ? ?1074 ? ? 4544

3 ?17152 ? 19607 ? ?31687

4 ? 1266 ? ?3315 ? ? 8520

axis?参数告诉函数到底舍弃列还是行。如果axis等于0,那么就舍弃行。

END

统计描述

1

下一步就是通过describe属性,对数据的统计特性进行描述:

print df.describe()

# OUTPUT

Abra ? ? ? ?Apayao ? ? ?Benguet ? ? ? ?Ifugao ? ? ? Kalinga

count ? ? 79.000000 ? ? 79.000000 ? ?79.000000 ? ? 79.000000 ? ? 79.000000

mean ? 12874.379747 ?16860.645570 ?3237.392405 ?12414.620253 ?30446.417722

std ? ?16746.466945 ?15448.153794 ?1588.536429 ? 5034.282019 ?22245.707692

min ? ? ?927.000000 ? ?401.000000 ? 148.000000 ? 1074.000000 ? 2346.000000

25% ? ? 1524.000000 ? 3435.500000 ?2328.000000 ? 8205.000000 ? 8601.500000

50% ? ? 5790.000000 ?10588.000000 ?3202.000000 ?13044.000000 ?24494.000000

75% ? ?13330.500000 ?33289.000000 ?3918.500000 ?16099.500000 ?52510.500000

max ? ?60303.000000 ?54625.000000 ?8813.000000 ?21031.000000 ?68663.000000

END

假设检验

1

Python有一个很好的统计推断包。那就是scipy里面的stats。ttest_1samp实现了单样本t检验。因此,如果我们想检验数据Abra列的稻谷产量均值,通过零假设,这里我们假定总体稻谷产量均值为15000,我们有:

from scipy import stats as ss

# Perform one sample t-test using 1500 as the true mean

print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)

# OUTPUT

(-1.1281738488299586, 0.26270472069109496)

返回下述值组成的元祖:

t : 浮点或数组类型t统计量

prob : 浮点或数组类型two-tailed p-value 双侧概率值

2

通过上面的输出,看到p值是0.267远大于α等于0.05,因此没有充分的证据说平均稻谷产量不是150000。将这个检验应用到所有的变量,同样假设均值为15000,我们有:

print ss.ttest_1samp(a = df, popmean = 15000)

# OUTPUT

(array([ -1.12817385, ? 1.07053437, -65.81425599, ?-4.564575 ?, ? 6.17156198]),

array([ ?2.62704721e-01, ? 2.87680340e-01, ? 4.15643528e-70,

1.83764399e-05, ? 2.82461897e-08]))

第一个数组是t统计量,第二个数组则是相应的p值

END

可视化

1

Python中有许多可视化模块,最流行的当属matpalotlib库。稍加提及,我们也可选择bokeh和seaborn模块。之前的博文中,我已经说明了matplotlib库中的盒须图模块功能。

请点击输入图片描述

2

# Import the module for plotting

import matplotlib.pyplot as plt

plt.show(df.plot(kind = 'box'))

现在,我们可以用pandas模块中集成R的ggplot主题来美化图表。要使用ggplot,我们只需要在上述代码中多加一行,

import matplotlib.pyplot as plt

pd.options.display.mpl_style = 'default' # Sets the plotting display theme to ggplot2

df.plot(kind = 'box')

3

这样我们就得到如下图表:

请点击输入图片描述

4

比matplotlib.pyplot主题简洁太多。但是在本文中,我更愿意引入seaborn模块,该模块是一个统计数据可视化库。因此我们有:

# Import the seaborn library

import seaborn as sns

# Do the boxplot

plt.show(sns.boxplot(df, widths = 0.5, color = "pastel"))

请点击输入图片描述

5

多性感的盒式图,继续往下看。

请点击输入图片描述

6

plt.show(sns.violinplot(df, widths = 0.5, color = "pastel"))

请点击输入图片描述

7

plt.show(sns.distplot(df.ix[:,2], rug = True, bins = 15))

请点击输入图片描述

8

with sns.axes_style("white"):

plt.show(sns.jointplot(df.ix[:,1], df.ix[:,2], kind = "kde"))

请点击输入图片描述

9

plt.show(sns.lmplot("Benguet", "Ifugao", df))

END

创建自定义函数

在Python中,我们使用def函数来实现一个自定义函数。例如,如果我们要定义一个两数相加的函数,如下即可:

def add_2int(x, y):

return x + y

print add_2int(2, 2)

# OUTPUT

4

顺便说一下,Python中的缩进是很重要的。通过缩进来定义函数作用域,就像在R语言中使用大括号{…}一样。这有一个我们之前博文的例子:

产生10个正态分布样本,其中和

基于95%的置信度,计算和?;

重复100次; 然后

计算出置信区间包含真实均值的百分比

Python中,程序如下:

import numpy as np

import scipy.stats as ss

def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):

m = np.zeros((rep, 4))

for i in range(rep):

norm = np.random.normal(loc = mu, scale = sigma, size = n)

xbar = np.mean(norm)

low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

if (mu low) (mu up):

rem = 1

else:

rem = 0

m[i, :] = [xbar, low, up, rem]

inside = np.sum(m[:, 3])

per = inside / rep

desc = "There are " + str(inside) + " confidence intervals that contain "

"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"

return {"Matrix": m, "Decision": desc}

上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了?Python专家

import numpy as np

import scipy.stats as ss

def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):

scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))

norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))

xbar = norm.mean(1)

low = xbar - scaled_crit

up = xbar + scaled_crit

rem = (mu low) (mu up)

m = np.c_[xbar, low, up, rem]

inside = np.sum(m[:, 3])

per = inside / rep

desc = "There are " + str(inside) + " confidence intervals that contain "

"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"

return {"Matrix": m, "Decision": desc}

(责任编辑:IT教学网)

更多

推荐金山WPS文章