数据分析需掌握的基础知识
- 1、Python 常用数据类型
- 2、字符串常用模块、函数和操作
- 3、日期
- 4、Python基本数据结构
- 5、控制流
- 6、自定义函数
1、Python 常用数据类型
四种基本数据类型
数据类型 | 英文 | 举例 |
---|---|---|
整数 | Integer | i=1 |
浮点数 | Floats | n=1.23 |
字符串 | String | str='你好' |
布尔类型 | Booleans | b=True |
type()函数
type函数可以查看变量的数据类型,示例如下:
i=1
n=1.23
str='你好'
b=True
print(type(i))
print(type(n))
print(type(str))
print(type(True))
输出结果为:
2、字符串常用模块、函数和操作
使用引号包含字符串
使用符号 | 输出效果 |
---|---|
单个引号('') | 输出引号内的字符 |
3个引号(''') | 允许字符串跨多行,所见即所得格式 |
示例如下:
var1 = 'Hello World!'
var2='''hello
world!
'''
print(var1)
print('----------')
print(var2)
输出结果为:
字符串转义字符反斜杠(\)
在字符串中使用特殊字符,用反斜杠转义
常用转义字符 | 描述 |
---|---|
(在行末尾) | 续行符 |
\ | 反斜杠符号 |
' | 单引号 |
" | 双引号 |
\n | 换行 |
\r | 回车 |
字符串运算
a='Hello',b='World'
操作符 | 描述 | 示例 |
---|---|---|
+ | 字符串连接 | a+b 输出 HelloWorld |
* | 重复输出字符串 | a*2 输出 HelloHello |
[] | 通过索引获取字符串中的字符 | a[1] 输出e |
[:] | 截取字符串的一部分,左闭右开 ,从0开始 | a[1:4]输出 ell |
示例如下:
a='Hello'
b='World'
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
输出结果为:
字符串处理标准库String常用函数
函数 | 描述 | 方法 |
---|---|---|
split | 将一个字符串拆分成一个子字符串列表 | split('str',num),使用str字符进行拆分,,截取num+1个子字符串 |
join | 将序列中的元素以指定的字符连接生成新的字符串 | str.join(seq),seq为要连接的元素序列,以指定字符串str作为分隔符,将seq中所有的元素合并为一个新的字符串 |
strip | 截取字符串的空格或指定字符 | lstrip()截取左侧字符,rstrip()截取右侧字符,strip()截取两侧字符。str.lstrip([chars]) |
replace | 将字符串中的一个或一组字符替换为另一个或一组字符 | str.replace(old,new,max),max替换不超过max次 |
lower | 将字符串中的所有大写字符转换为小写字符 | str.lower() |
upper | 将字符串中的所有小写字符转换为大写字符 | str.upper() |
capitalize | 将字符串中的第一个字母变成大写 | str.capitalize() |
len | 返回对象(字符、列表、元祖)等的长度或项目个数 | len(s),s为对象 |
示例如下:
print('--------split示例---------')
a='My name is lily'
a1=a.split(' ',2)
print(a1)
print('\n')
print('--------join示例----------')
str = "-"
seq = ("a", "b", "c")
print (str.join( seq ))
print('\n')
print('--------strip示例----------')
str = " Hello World!!! "
print( str.lstrip() )
print( str.rstrip() )
print( str.strip() )
str = "88888888Hello World!!!8888888"
print( str.lstrip('8') )
print( str.rstrip('8') )
print( str.strip('8') )
print('\n')
print('--------replace示例----------')
str = "this is string example....wow!!!this is string example....wow!!!"
print (str.replace("is", "was",3))
print('\n')
print('--------lower,upper,capitalize,len示例----------')
str='hello World'
print('lower:'+str.lower())
print('upper:'+str.upper())
print('capitalize:'+str.capitalize())
print(len(str))
输出结果为:
3、日期
Python中包含了datetime模块,提供了非常强大的功能来处理日期和时间
常用对象:
对象 | 描述 |
---|---|
date | 包含年月日 |
datetime | 包含年月日、时分秒 |
示例如下:
from datetime import date, time, datetime, timedelta
today = date.today()
print(today)
current_datetime = datetime.today()
print(current_datetime)
输出结果为:
获取年月日
函数 | 说明 | 示例 |
---|---|---|
year | 获取年份 | [图片上传失败...(image-58fffb-1588731044908)] |
month | 获取月份 | [图片上传失败...(image-ddf025-1588731044908)] |
day | 获取日期 | [图片上传失败...(image-412ddf-1588731044908)] |
timedelta函数
timedelta 本身代表一个时间差,可以在 date 或 datetime 类型间做时间差运算。
timedelta只存储days,seconds,microseconds三个值,其他类型会自动换算
示例如下:
a = datetime.now()
b = datetime.utcnow()
a - b
输出结果为:
对datetime对象进行时间加减操作:
now = datetime.now()
aDay = timedelta(days=1)
aWeek = timedelta(weeks=1)
aHour = timedelta(hours=1)
print(aDay)
print(aWeek)
print(aHour)
now_day = now + aDay
now_week= now + aWeek
now_hour= now + aHour
print(now_day )
print(now_week )
print(now_hour )
输入结果为:
strftime函数
用来格式化datetime对象:datetime.strftime('%')
常用格式符 | 说明 |
---|---|
%Y | 四个数字的年份 2020 |
%y | 二个数字的年份 20 |
%m | 返回月份,范围[0,12] |
%d | 当前时间是当前月的第几天 |
%a | 星期的英文缩写,Mon |
%A | 星期的英文全拼,Monday |
%b | 月份的英文缩写,Jan |
%B | 月份的英文全拼,January |
%H | 以24小时制表示当前小时 |
%h | 以12小时制表示当前小时 |
%M | 返回分钟数 范围 [0,59] |
%S | 返回秒数 范围 [0,61] |
%P | 返回是上午还是下午 AM or PM |
%c | 返回datetime的字符串表示,如03/08/15 23:01:26 |
%x | 日期的字符串表示 :03/08/15 |
%X | 时间的字符串表示 :23:22:00 |
示例如下:
from datetime import datetime
dt = datetime.now()
print ('时间:(%Y-%m-%d %H:%M:%S %f): ' , dt.strftime( '%Y-%m-%d %H:%M:%S' ))
运行结果为:
4、Python基本数据结构
常见的四种数据结构对比表格:
操作 | 列表List | 元组Tuple | 字典Dictionary | 集合set |
---|---|---|---|---|
简介 | 最常用的数据类型[x,y,z] | 类似于列表但固定长度,不可变(x,y,z) | 一种可变容器模型{key1:value1,key2:value2} | 无序且元素唯一的容器{x,y,z} |
用处 | 简单有序的,经常被修改的数据集合,具体元素值不经常被查询 | 一个不变的数据集合 | 经常被修改、被查询的键&值对 | 展现一个数据集合中出现的独特元素的集合 |
创建 | new_list=[1,1,'string'] | new_tup=(1,1,'string') | new_dic={'key_a':1,'key_b':1,'key_c':'string'} | new_set={1,1,'string'} print(new_set)-->{1,'string'} |
重复元素 | 可重复 | 可重复 | 键不可以重复,值可以重复 | 不可重复 |
是否有序有 | 有 | 无 | 无 | |
值是否可变可变 | 不可变 | 可变 | 可变 | |
取单个子集(数字索引从0开始) | new_list[0] | new_tup[0] | new_dic{'key_a'} | 不能被取子集 |
切片取子集 | new_list[x:y] (从第x开始,取到第y个(不包含y)) | 同list | 不能被取切片子集 | 不能被取切片子集 |
修改元素 | new_list[0]=0 | 不可修改 | New_dic['key_c']=2 | 间接通过增加/删除元素完成 |
增加元素 | append方法加到尾部:new_list.append('extra') ;insert方法插入到指定位置:new_list.insert(1,'extra') | 不可变 | new_dict['key_new']='extra'; update方法增加多个值:new_dict.update(key_d=3,key_e=4) | add方法增加一个值:new_set.add(3) update方法增加多个值:new_set.update([3,4,5]) |
删除元素 | pop方法删除特定位置的元素:new_list.pop(1); remove方法删除特定值:new_list.remove(1) | 不可变 | del函数按键名删除:del(new_dict('key_a')) | remove方法删除一个值:new_set.remove('string') |
创建空×× | empty_list=[] | empty_tup=() | empty_dic={} | empty_set=set() |
5、控制流
条件语句
当“判断条件”成立时,则执行后面的语句,执行内容可以多行,以缩进来区分表示同一范围,else为可选语句,当需要在条件不成立时执行内容。
if语句执行过程:
通常情况下,判断条件为多个时,可使用如下形式:
if 判断条件1:
执行语句1......
elif 判断条件2:
执行语句2......
elif 判断条件3:
执行语句3......
else:
执行语句4......
示例如下:
num = 5
if num == 3: # 判断num的值
print('boss')
elif num == 2:
print('user')
elif num == 1:
print('worker')
elif num < 0: # 值小于零时输出
print ('error')
else:
print ('roadman') # 条件均不成立时输出
输出结果:
循环语句
程序一般情况下是按顺序执行的。循环语句允许我们执行一个语句或与剧组多次。执行过程如下:
循环类型 | 描述 |
---|---|
while循环 | 在给定的判断条件为True时执行循环,否则退出循环体 |
for循环 | 重复执行语句 |
嵌套循环 | while循环体和for循环体可以相互嵌入 |
while循环
语法如下:
while 判断条件:
执行语句......
流程图:
示例如下:
count = 0
while (count < 5):
print ('The count is:', count)
count = count + 1
else:
print ("Good bye!")
输出结果为:
for循环
可以遍历任何序列的项目,如一个列表或者一个字符串。
语法如下:
for 元素 in 序列:
代码块
流程图:
示例如下:
for letter in 'Python': # 第一个实例
print( '当前字母 :', letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print ('当前水果 :', fruit)
print ('Good bye!')
运行结果为:
循环嵌套
示例如下:
i = 2
while(i < 10):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1
if (j > i/j) : print (i, " 是素数")
i = i + 1
print ("Good bye!")
运行结果为:
循环控制语句
控制语句 | 描述 |
---|---|
break语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环 |
pass语句 | 空语句,为了保持程序结构的完整性 |
6、自定义函数
def自定义函数
语法如下:
def 自定义函数名称(x,y):
代码块
return
示例如下:
def cal(x,y=1):#y设置1为默认值
result=x*x+y
return result
print(cal(2))
print(cal(2,3))
输出结果为:
lambda匿名函数
通过单个语句生成函数的方式
示例如下:
cal=lambda x,y=1: x*x+y
print(cal(2))
print(cal(2,3))
输入结果为:
其中:lambda为关键词,x,y为函数自变量,x*x+y为函数返回值的代码表达式。