Python基础
- 1 常用数据分析包
- 2 Python基本数据类型
- 2.1 字符串
- 2.2 数值类型:整数、浮点数
- 2.3 布尔值
- 2.4 日期时间
- 2.5类型转换
- 2.6 表达式
- 3 Python数据基本结构
- 4 控制流
- 4.1 顺承
- 4.2 判断
- 4.3 循环
- 4 Python函数
- 5 Python模块
python特点
- 简单、直观、强大
- 开源,以便任何人做出贡献
- 代码容易理解
- 适用于短期开发的日常任务
- 可扩展性、丰富的库、面向对象、高级语言、可移植性等特点
缺点
- 强制缩进
- 构架选择太多
- 性能低(低于C)
Anacoda python 是python科学计算包的合集,包含了常用科学计算、数据分析
1 常用数据分析包
- numpy:科学计算,提供数组、矩阵 ,python本身无数组,只有列表
- scipy:统计推断、统计检验等
- pandas:基于numpy的数据读取、数据整合、数据清洗整理等
- statsmodel:统计检验、统计建模等
- scikit-learn:数据变换、机器学习、交叉验证等
- matplotlib:绘图
- seaborn:高级统计制图包
安装包:CMD->conda install 包名 ;或CMD->pip install 包名
2 Python基本数据类型
- python有6中基本数据类型:
string 字符串
number 数值类型:整数(integer)和浮点数(float)
bool 布尔类型:True/False
time/datetime 日期时间
None 空值
complex 复数
2.1 字符串
字符串可用 ’ " ‘’’ 引用
字符串本身内部还含有单引号(双引号),外部使用双引号(单引号)
字符段使用三引号,
字符串内部含有单引号和双引号,加入转义字符 \ 原样输出
- 转义字符
“\”后一位字符原样输出
“\t”制表符,跳转到下一tab位置
“\n” 换行
“r” 字符串前面加r代表原样输出,不需要转义时使用
##读取数据文件路径时前面加r - 子字符串——取子字符串
‘in’
s='python'
print('py' in s)
切片
print(s[2]) #数字代表索引从0开始
print(s[1:4]) #默认左闭右开
- 字符串连接
‘+’ 连接 、 ’ strip( ) ’ 去除
word1='"hello"'
word1='"world"'
sentence=word1.strip('"')+' '+word2.strip('"')+'!'
print(sentence)
- 字符串格式输出
‘%s’ 占位
print('The first world is %s,and the second word is %s',%(word1,word2))
2.2 数值类型:整数、浮点数
Python3中对于整数和浮点数的运算进行区分,在混合运算时,python会把整数转化为浮点数
** 次方
7**3 #7的三次方
// 取整
9//2 #4
9.0//2.0 #4.0
导入math模块进行更多运算
import math
print(math.log(math.e))
2.3 布尔值
逻辑运算 True=1 False=0
and 与
or 或
not 非,取反
2.4 日期时间
time、datetime模块用于格式化时间和日期
获取日期,解析字符串
import time
now=time.strptime('2021-08-25','%Y-%m-%d')
print(now)
获取时间差值
import datetime
someday=datetime.date(1999,2,10)
anotherday=datetime.date(1999,2,15)
deltaday=another-someday
deltaday.days
查看类型
type()
2.5类型转换
str() 转为字符串
float() 转为浮点型
int() 转为整型
2.6 表达式
表达式=运算符+操作数,进行数据处理
运算符:算术、赋值、比较、逻辑、成员
操作数:常量、变量
成员运算符:测试成员是否在另外一个字符串、列表或元组中:
in、not in,返回布尔值
3 Python数据基本结构
列表list
元组/序列tuple
集合set
字典dict
- 列表list[ ]
有序集合,内部元素可不同类型
正序索引从0开始,倒序索引从1开始
print(len(s)) #查询列表长度
print(s[1]) #索引为1的/第一位元素
print(s[-1]) #倒数第一个元素
print(s[::2]) #[开始的位置:结束的位置:步长]
#切片步长为2,即每隔一个取元素
修改元素
s[3]="修改后的元素" #直接取出元素修改
print(s[3])
插入元素
append( ) 每次在列表末尾填入一个元素
extend( ) 在列表末尾加入另一个列表
insert( ) 在指定位置插入元素或列表
s.append('要插入元素')
s.extend(['要插入元素1','要插入元素2','...'])
s.insert(1,list) #将列表list插入索引第一位后
删除元素
pop( ) 可指定索引,删除某个位置的元素,不指定时默认删除末尾元素,返回被指定位置并删除该位置的元素
remove( ) 删除指定元素值
clear( ) 清空列表元素
del函数删除列表对象
s.pop(1) #删除索引为1的元素
s.remove("元素值")
s.clear()
copy() 复制内容,不共享内存地址,方便后续修改
s1=['ming','hua','juan','yun']
s2=s1.copy()
s2[0]='new' #复制的是s1的内容,修改s2不干扰s1
reserve( ) 倒置
sort( ) 升序排列
range函数生成列表
for i range(10)
for i range(16,10,-1) #从16到10倒序的数列
- 元组tuple( )
元组是不可变的列表,只可读取
- 集合set( )
输入一个列表、字典或字符串作为输入,创建set。Python中集合功能:进行集合操作、消除重复元素。
a=set('aabc')
b=set('cdfe')
print('a=',a) #a= {'b', 'c', 'a'}
print('b=',b) #b= {'f', 'e', 'c', 'd'}
x=a&b #取交集
y=a|b #取并集
z=a-b #取差集
- 字典dict{ }
索引自定义,键值对
print(k["键"]) #获取指定键对应的值
print(k.keys()) #获取所有键列表
print(k.values()) #获取所有值列表
- 不同类型可相互转换
zip( ) 将列表、元组压缩成字典
z1=zip(('A','B','C'),[1,2,3,4])
print(z1)
print(dict(z1)) #{'A':1,'B':2,'C':3}
4 控制流
4.1 顺承
多个逻辑行写在一个物理行,中间用‘ ; ’隔开
一个逻辑行写在多个物理行,用‘ ** \ ** ’隔开
4.2 判断
if、else、elif
salary=4
if salary>5:
print("Wow!!!")
elif salary>3:
print("That's OK!")
elif salary>2:
print("emmm")
else:
print("Fighting!")
三元运算操作
在赋值时直接加入判断,简化代码
a,b=1,3
c=a if a>b else b
print(c) #3
##########################等同于
a,b=1,3
if a>b:
c=a
else:
c=b
print(c)
4.3 循环
- while循环
a=1
while a<10:
if a<=5:
print(a)
elif:
print("hello!")
a=a+1
else: #########
print("Done!")
- for循环
for(变量)in(迭代器):
执行语句块
#迭代器:对象可取下一位
a={'Yao':226,'Sharq':216,'AI':183}
for i in a: #取键
print(i,a[i]) #分别打印出每个键和值
终止循环
- break:跳出整个循环
for i in range(1,5):
if i==3:
break
print(i) #1\2
- continue:跳出当前循环,执行下一个循环
for i in range(1,5):
if i==3:
continue
print(i) #1\2\4
- pass:占位符,不执行,保持格式完整性
for i in range(1,5):
if i==3:
pass
print(i) #1\2\3\4
列表生成器
fruits=['"Apple"','Watermelon','"Banana"']
[x.strip('""') for x in fruits] #['Apple','Watermelon','Banana'] 清洗掉列表内元素双引号
[x**2 for x in range(21) if x%2] #[1,9,25,49,81,121,169,225,289,361] x%2=0/1(False/True)21内所有奇数的平方
[m+n for m in 'ABC' for n in 'xyz'] #['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ'] 排列组合
4 Python函数
封装特定功能,可直接调用,在进行数据分析时大多直接调用定义好的函数操作数据
- 自定义函数 def 、abs()计算绝对值
def my_abs(x):
if x>=0:
renturn x
else:
return -x
my_abs(-9)
- 返回多个值
def test(i,j):
k=i*j
return i,j,k
test(4,5) #(4 5 20)
a,b,c=test(4,5)
print(a,b,c) #4 5 20
type(test(4,5)) #tuple
- 高阶函数
变量<—>函数、把另一个函数作为参数传入一个函数
m=abs #将绝对值函数赋给变量m,m即代表绝对值函数
def add(x,y,f):
return f(x)+f(y)
add(7,-5,m) #12
map 将传入的函数依次作用到序列的每个元素,返回新序列
mylist=[-1,2,-3,4,-5,6,7]
map(abs,mylist)
for i in map(abs,mylist):
print(i) #1\2\3\4\5\6\7
filter
def is_odd(x):
return x%2 #定义函数,整除=0为False,其余为True->进入下一步,即过滤得到列表的奇数元素
filter(is_odd,mylist)
for i in filter(is_odd,mylist):
print(i) #1\3\5\7
- 匿名函数 lambda
只有函数体没有函数名
f=lambda x:x*x
f(4) #16
###等同于
def f(x):
return x*x
5 Python模块
导入
import pandas as pd #pd.Dataframe()
from pandas import Dataframe #Dataframe()