Python大数据处理 一 Python入门

一 Python入门

链接: 他人详解

  • Python 中单行注释使用 #,多行注释使用三个单引号(''')或三个双引号("""
  • Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。
  • 以下划线开头的标识符有特殊含义:
  • 单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 导入
  • 双下划线开头的标识符,如:__xx,表示私有成员;
  • 双下划线开头和结尾的标识符,如:xx,表示 Python 中内置标识,如:init() 表示类的构造函数。

(一)输入输出

Python 输出使用 print(),内容加在括号中即可。如下所示:

print('Hello Python')

Python 提供了一个 input(),可以让用户输入字符串,并存放到一个变量里。如下所示:

name = input()
print('Hi',name)

(二)多行显示

Python 中一般以新行作为语句的结束标识,可以使用 \ 将一行语句分为多行显示。如下所示:

a = 128
b = 1024
c = 512
d = a + \
    b - \
    c

如果包含在 []、{}、() 括号中,则不需要使用 \。如下所示:

arr = {
    a,
    b,
    c
}

(三)基本语句

1.条件语句

在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示:

if 判断条件1:
    执行语句1...
elif 判断条件2:
    执行语句2...
elif 判断条件3:
    执行语句3...
else:
    执行语句4...

2.循环语句

2.1: for 循环
  • for 循环可以遍历任何序列,比如:字符串。如下所示:
str = 'Python'
for s in str:
    print(s)

输出结果:

P
y
t
h
o
n
2.2 while 循环

while 循环,满足条件时进行循环,不满足条件时退出循环。如下所示:

sum = 0
m = 10
while m > 0:
    sum = sum + m
    m = m - 1
print(sum)

输出结果:55

2.3 break、continue和pass

break 用在 for 循环和 while 循环语句中,用来终止整个循环。
continue 用在 for 循环和 while 循环语句中,用来终止本次循环。
pass 是空语句,它不做任何事情,一般用做占位语句,作用是保持程序结构的完整性。

if True:
    pass
2.4 range()函数
  • range函数返回一个range类型的整数序列,一般用在循环结构中
range(start, stop, step)
参数名称		说明				备注
start	计数起始位置		整数参数,可省略。省略时默认从0开始计数
stop	计数终点位置		不可省略的整数参数。计数迭代的序列中不包含stop
step	步长			可省略的整数参数,默认时步长为1

使用示例:

#仅保留stop参数
>>> test = range(10)
>>> test
range(0, 10)
>>> list(test)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#指定起始位置和终止位置
>>> test = range(3,10)
>>> test
range(3, 10)
>>> list(test)
[3, 4, 5, 6, 7, 8, 9]

#指定步长
>>> test = range(0, 10, 2)
>>> test
range(0, 10, 2)
>>> tuple(test)
(0, 2, 4, 6, 8)

使用注意:

  • 所有参数都是整形,不能给出浮点数序列。
  • step小于1没有任何意义
  • 步长不能为0
  • range()的返回值类型是range
2.5 enumerate()
  • enumerate()参数为可遍历/可迭代的对象(如列表、字符串)
  • enumerate()多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate()
  • enumerate()返回的是一个enumerate对象
  • enumerate(lst,1) 还可以添加个索引值起点参数,若设成 1,则索引从 1 开始
s = [1, 2, 3, 4, 5]
e = enumerate(s)
for index, value in e:
    print('%s, %s' % (index, value))
 
输出结果:
0, 1
1, 2
2, 3
3, 4
4, 5
#指定索引值起点参数
e = enumerate(s,1)
for index, value in e:
    print('%s, %s' % (index, value))
 
输出结果:
1, 1
2, 2
3, 3
4, 4
5, 5

(四)数据类型

1.数值类型数据

有三种数值类型,分别是:整型(int)、浮点型(float)、复数(complex)

1.1:基本运算
运算	描述
x + y	x 和 y 的和
x - y	x 和 y 的差
x * y	x 和 y 的乘积
x / y	x 和 y 的商
x // y	x 除以 y(地板除),取整除
x % y	x 除以 y,取模(余数)
-x	    x 取反
+x	    x 不变
abs(x)	x 的绝对值
int(x)	将 x 转换为整数
float(x)	    将 x 转换为浮点数
complex(x, y)	一个带有实部 x 和虚部 y 的复数,y 默认为 0。
divmod(x, y)	(x // y, x % y)
pow(x, y)	    x 的 y 次幂
x ** y	        x 的 y 次幂
1.2:数学函数

除了上面的基本运算外,我还可以借助数学模块 math 实现更多的运算。
首先要先引入数学模块 math。如下所示:

import math

引入之后就可以使用了,以 math 模块中求平方根函数 sqrt(x) 为例。使用方式如下所示:

import math
math.sqrt(1024)

math 模块中的函数。如下表所示:

函数	    	描述
abs(x)	    返回 x 的绝对值
ceil(x)		返回 x 的上入整数,如:math.ceil(1.1) 返回 2
floor(x)	返回 x 的下舍整数,如:math.floor(1.1) 返回 1
exp(x)		返回 e 的 x 次幂
log(x)		返回以 e 为底 x 的对数
log10(x)	返回以 10 为底 x 的对数
pow(x, y)	返回 x 的 y 次幂
sqrt(x)		返回 x 的平方根
factorial(x)	返回 x 的阶乘
1.3:随机函数

random 模块对随机数的生成提供了支持。
首先还是要引入 random 模块。如下所示:

import random

下面简单介绍两个函数:
random(x)函数
随机生成一个 0 到 1 范围内的实数。使用如下所示:

import random
random.random()

uniform(x, y)函数
随机生成一个 x 到 y 范围内的实数。使用如下所示:

import random
random.uniform(1,10)
1.4:逻辑运算

and:与
计算方式:x and y
如果x的计算值为False,x and y返回False,否则它返回y的计算值

or:或
计算方式:x or y
如果x的计算值为True,x or y返回x的计算值,否则它返回y的计算值

not:非

2.字符串

2.1:转义符

常见的转义字符如下表所示:

转义字符		描述
\		在行尾使用时,用作续行符
\b		退格(Backspace)
\000	空
\n		换行
\v		纵向制表符
\t		横向制表符
\r		回车
2.2:运算符

常见的字符串运算符,如下表所示:

运算符		描述
 + 	连接符
 + 	重复输出
[]		通过索引获取字符串中字符
[ : ]	获取字符串中的一部分
in		字符串中是否包含指定字符
not in	字符串中是否不包含指定字符
r/R		字符串原样输出

使用示例如下所示:

s1 = 'Hello'
s2 = 'Python'
print('s1 + s2 -->', s1 + s2)
print('s1 * 2 -->', s1 * 2)
print('s1[0] -->', s1[0])
print('s1[0:2] -->',s1[0:2])
print('"H" in s1 -->','H' in s1)
print('"H" not in s1 -->','H' not in s1)
print('\\r -->', R'\r')

输出结果:

s1 + s2 --> HelloPython
s1 * 2 --> HelloHello
s1[0] --> H
s1[0:2] --> He
"H" in s1 --> True
"H" not in s1 --> False
\r --> \r

3.序列结构

3.1:索引
  • 常见的序列结构包括字符串、列表、元组等
  • Python中的序列是一块可存放多个值的连续内存空间,所有值按一定顺序排列,每个值所在位置都有一个编号,称其为索引,我们可以通过索引访问其对应值。
    下面通过一个示例作进一步了解,以字符串为例,如下所示:
str = 'Python'
print('str[0] str[-6] =', str[0], str[-6])
print('str[5] str[-1] =', str[5], str[-1])

输出结果:
str[0] str[-6] = P P
str[5] str[-1] = n n

从结果来看,我们使用非负数索引与负数索引得到的结果一致。

3.2:切片

切片操作可以访问一定范围内的元素,语法如下所示:

sname[start : end : step]
  • sname:表示序列的名称;
  • start:开始索引位置(包括该位置),默认为 0;
  • end:表示切片的结束索引位置(不包括该位置),默认为序列的长度;
  • step:步长。
    以字符串为例,如下所示:
str = 'Python'
print(str[:3])
print(str[3:])
print(str[:])

输出结果:
Pyt
hon
Python
3.3:相加

Python 支持类型相同的序列使用 + 作相加操作,该操作不会去除重复的元素。

3.4:相乘

Python 中,使用数字 n 乘以一个序列会生成新的序列,内容为原来序列被重复 n 次的结果。

3.5:元素是否在序列中

Python 使用 in 关键字检查某元素是否为序列的成员,语法如下:

val in seq
  • val:要检查的元素;
  • seq:指定的序列。
    通过一个例子作进一步了解,以字符串为例,如下所示:
str = 'Python'
print('on'in str)

输出结果:
True
3.6:内置函数
函数	描述
len()	计算序列的长度
max()	找出序列中的最大元素
min()	找出序列中的最小元素
list()	将序列转换为列表
str()	将序列转换为字符串
sum()	计算元素的和
sorted()	对元素进行排序
enumerate()	将序列组合为一个索引序列,多用在 for 循环中

4.列表[ ]与元组( )

4.1:列表
  • Python 中没有数组,而是加入了功能更强大的列表(list),列表可以存储任何类型的数据,同一个列表中的数据类型还可以不同
  • 列表是序列结构,可以进行序列结构的基本操作:索引、切片、加、乘、检查成员。
  • 列表可修改单个元素,元组不可修改单个元素
4.1.1 创建、访问、更新和删除
  • 列表中所有元素都放在一个中括号 [] 中,相邻元素之间用逗号 , 分隔
  • 通过索引访问列表中的值,还可以使用 : 截取范围内的元素
  • 除了对列表中现有元素进行修改外,还可以使用 append() 向列表中添加新元素:
  • 使用 del 删除列表中元素
l = [1024, 0.5, 'Python']

print('l[0] -->', l[0])
print('l[1:] -->', l[1:])
输出结果:
l[0] --> 1024
l[1:] --> [0.5, 'Python']

# 修改列表中第二个元素
l[1] = 5
# 向列表中添加新元素
l.append('Hello')
print('l[1] -->', l[1])
print('l -->', l)
输出结果:
l[1] --> 5
l --> [1024, 5, 'Python', 'Hello']

# 删除列表中第二个元素
del l[1]
print('l -->', l)
输出结果:
l --> [1024, 'Python']
4.1.2 常用方法

count():统计列表中某个元素出现的次数
index():查找某个元素在列表中首次出现的位置(即索引)
remove():移除列表中某个值的首次匹配项
sort():对列表中元素进行排序
copy():复制列表

l = ['d', 'b', 'a', 'f', 'd']

print("l.count('d') -->", l.count('d'))
输出结果:
l.count('d') --> 2

print("l.index('d') -->", l.index('d'))
输出结果:
l.count('d') --> 0

l.remove('d')
print("l -->", l)
输出结果:
l --> ['b', 'a', 'f', 'd']


l = ['d', 'b', 'a', 'f', 'd']
l.sort()
print('l -->', l)
输出结果:
l --> ['a', 'b', 'd', 'd', 'f']


l = ['d', 'b', 'a', 'f', 'd']
lc = l.copy()
print('lc -->', lc)
输出结果:
lc --> ['d', 'b', 'a', 'f', 'd']
4.2:元组
  • 元组(tuple)与列表类似,但元组是不可变的,可简单将其看作是不可变的列表,元组常用于保存不可修改的内容。
4.2.1 创建、访问、修改、删除
  • 元组中所有元素都放在一个小括号 () 中,相邻元素之间用逗号 , 分隔
  • 与访问列表中元素类似
  • 元组中元素不能被修改,我们要用重新赋值的方式操作
  • 元组中的元素不能被删除,我们只能删除整个元组
t = (1024, 0.5, 'Python')
#访问
print('t[0] -->', t[0])
print('t[1:] -->', t[1:])
输出结果:
t[0] --> 1024
t[1:] --> (0.5, 'Python')
#重新赋值的方式修改
t = (1024, 0.5, 'Python', 'Hello')
print('t -->', t)
输出结果:
t --> (1024, 0.5, 'Python', 'Hello')
#元素不能被删除,只能删除整个元组
del t
print('t -->', t)
输出结果:
NameError: name 't' is not defined
4.2.2 常用方法
  • len():计算元组中元素个数
  • max() 和 min():返回元组中元素最大、最小值
  • tuple():将列表转换为元组
l = ['d', 'b', 'a', 'f', 'd']
# tuple()
t = tuple(l)
print('t -->', t)
输出结果:
t --> ('d', 'b', 'a', 'f', 'd')

5.字典{key-value}与集合{key}

5.1:字典
  • 字典(dict)是 Python 的数据结构,它的内容都是以键-值(key-value)的方式存在的。
  • 集合中没有值(value),只有键(key),可理解为不能重复的列表
5.1.1 创建、访问、修改、清空
  • 字典的内容在花括号 {} 内,键-值(key-value)之间用冒号 : 分隔,键值对之间用逗号 , 分隔
  • 字典中的值通过 key 进行访问
  • 清空字典使用 clear 方法
#创建
d = {'name':'小明', 'age':'18'}
# 使用 dict 函数
# 方式一
l = [('name', '小明'), ('age', 18)]
d = dict(l)
# 方式二
d = dict(name='小明', age='18')
# 空字典
d = dict()
d = {}

#访问
>>> d['name']
'小明'
# 使用 get 方法
>>> d.get('name')
'小明'

#清空集合
>>> d.clear()
>>> d
{}

#获取字典的长度
>>> d = dict(name='小明', age='18')
>>> len(d)
2
5.2 集合
  • 集合(set)与字典相同均存储 key,但也只存储 key,因 key 不可重复,所以 set 的中的值不可重复,也是无序的。
5.2.1 创建、添加、删除、清空
  • 集合使用花括号 {} 或者 set() 函数创建,如果创建空集合只能使用 set() 函数
  • 添加元素可以使用 addupdate 方法,如果元素已经存在,则不进行操作
  • 删除元素使用 remove 方法
  • 清空集合使用 clear 方法
#创建
s = {'a', 'b', 'c'}
# 使用 set 函数
s = set(['a', 'b', 'c'])
# 空集合
s = set()
#集合中重复的元素会被自动过滤掉
>>> s = {'a', 'a', 'b', 'c', 'c'}
>>> s
{'a', 'c', 'b'}

#添加
>>> s = {'a', 'b', 'c'}
>>> s.add('d')
>>> s
{'a', 'd', 'c', 'b'}
>>> s.update('e')
>>> s
{'a', 'b', 'e', 'd', 'c'}
# 添加已经存在的元素 a
>>> s.add('a')
>>> s
{'a', 'b', 'e', 'd', 'c'}

#删除
>>> s = {'a', 'b', 'c'}
>>> s.remove('c')
>>> s
{'a', 'b'}

#清空
>>> s = {'a', 'b', 'c'}
>>> s.clear()
>>> s
set()

(五)自定义函数

1. 声明定义函数

  • Python 使用 def 关键字来声明函数
  • 如果要定义一个无任何功能的空函数,函数体只写 pass 即可。
  • 我们还可以使用 lambda 定义匿名函数
def 函数名(参数):
	函数体
	return 返回值

def 函数名():
	pass

lambda 参数 : 表达式

2. 实例

# 空函数
def my_empty():
    pass

# 无返回值
def my_print(name):
    print('Hello', name)

# 有返回值
def my_sum(x, y):
    s = x + y
    print('s-->', s)
    return s
    
# 不定长参数
def my_variable(*params):
    for p in params:
        print(p)

# 匿名函数
my_sub = lambda x, y: x - y

(六) 文件处理

1.创建文件

Python 使用 open() 函数创建或打开文件,语法格式如下所示:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明如下所示:

  1. file:表示将要打开的文件的路径,也可以是要被封装的整数类型文件描述符。
  2. mode:是一个可选字符串,用于指定打开文件的模式,默认值是 ‘r’(以文本模式打开并读取)。可选模式如下:
模式	描述
r	读取(默认)
w	写入,并先截断文件
x	排它性创建,如果文件已存在则失败
a	写入,如果文件存在则在末尾追加
b	二进制模式
t	文本模式(默认)
 3. 更新磁盘文件(读取并写入)
  1. buffering:是一个可选的整数,用于设置缓冲策略。
  2. encoding:用于解码或编码文件的编码的名称。
  3. errors:是一个可选的字符串,用于指定如何处理编码和解码错误(不能在二进制模式下使用)。
  4. newline:区分换行符。
  5. closefd:如果 closefd 为 False 并且给出了文件描述符而不是文件名,那么当文件关闭时,底层
  6. 文件描述符将保持打开状态;如果给出文件名,closefd 为 True (默认值),否则将引发错误。
  7. opener:可以通过传递可调用的 opener 来使用自定义开启器。

以 txt 格式文件为例,我们不手动创建文件,通过代码方式来创建,如下所示:

open('test.txt', mode='w',encoding='utf-8')

执行完上述代码,就为我们创建好了 test.txt 文件。

2.写入文件

上面我们创建的文件 test.txt 没有任何内容,我们向这个文件中写入一些信息,对于写操作,Python 文件对象提供了两个函数,如下所示:

函数				描述
write(str)		将字符串写入文件,返回写入字符长度
writelines(s)	向文件写入一个字符串列表

我们使用这两个函数向文件中写入一些信息,如下所示:

wf = open('test.txt', 'w', encoding='utf-8')
wf.write('Tom\n')
wf.writelines(['Hello\n', 'Python'])
# 关闭
wf.close()

上面我们使用了 close() 函数进行关闭操作,如果打开的文件忘记了关闭,可能会对程序造成一些隐患,为了避免这个问题的出现,可以使用 with as 语句,通过这种方式,程序执行完成后会自动关闭已经打开的文件。如下所示:

with open('test.txt', 'w', encoding='utf-8') as wf:
    wf.write('Tom\n')
    wf.writelines(['Hello\n', 'Python'])

3.读取文件

之前我们已经向文件中写入了一些内容,现在我们读取一下,对于文件的读操作,Python 文件对象提供了三个函数,如下所示:

函数			描述
read(size)	读取指定的字节数,参数可选,无参或参数为负时读取所有
readline()	读取一行
readlines()	读取所有行并返回列表

我们使用上面三个函数读取一下之前写入的内容,如下所示:

with open('test.txt', 'r', encoding='utf-8') as rf:
    print('readline-->', rf.readline())
    print('read-->', rf.read(6))
    print('readlines-->', rf.readlines())

(七) 错误和异常处理

Python 程序捕捉异常使用 try/except 语句

#1、被除数为 0,未捕获异常
def getNum(n):
        return 10 / n
print(getNum(0))
#输出结果:ZeroDivisionError: division by zero

#2、捕获异常
def getNum(n):
    try:
        return 10 / n
    except IOError:
        print('Error: IOError argument.')
    except ZeroDivisionError:
        print('Error: ZeroDivisionError argument.')
print(getNum(0))

输出结果:
Error: ZeroDivisionError argument.
None
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值