数据分析挖掘(一)---python基础

数据分析挖掘(一)

1.简介

对于这个系列,是针对于《利用python进行数据分析》来写的,不详细去描述各种概念,尽可能通过实例来去描述数据分析挖掘的各个部分。实例代码都是在jupyter notebook下运行的,可以结合自己实际需求进行使用。

2.python基础

2.1python规范

python用严格的缩进(Tab或者空格)来组织代码。

2.2一切皆为对象

python语言的一个重要特性就是对象模型的一致性。每一个数值、字符串、数据结构、函数、类、模块等所有存在于python解释器中的,都是python对象。每个对象都会关联到一种类型何内部数据。

2.3 函数和方法的调用

调用函数时,向函数括号里传递0或者多个参数,通常会把返回值赋给一个变量,所有python对象都有内部函数,称之为方法,可以访问到对象的内容。

obj.some_method(x,y,z)

函数传参既可以是未知参数也可以是关键字参数:

result=f(a,b,c,d=5,e='foo')

2.4 变量和参数传递

在python中对一个变量(或者变量名称)赋值时,就创建了一个指向等号右边对象的引用。

a=[1,2,3]

假设给a复制给一个新变量b:

b=a

python中,a和b实际上是指向了相同的对象,即原来的[1,2,3]

a.append(4)
b

out:

[1,2,3,4]

在这里插入图片描述
赋值也称为绑定,已经被赋值的变量也称为绑定变量。

2.5 动态引用,强类型

python中的对象引用不涉及到类型。
python是强类型语言,意味着所有的对象都有一个执行的类型或者(类),隐式的转换只能在特定情况下发生:

a=4.5
b=2
print('a is{0},b is{1}'.format(type(a),type(b)))

out:

a is<class 'float'>,b is<class 'int'>
a/b

out:

2.25

可以用isinstance函数来检查一个对象是否是特定类型的实例

a=5
b=4.5
isinstance(a,int)

out:

True

isinstance 接受一个包含类型的元组,可以检查对象的类型是否在元组的类型中。

a=5
b=4.5
isinstance(a,(int,float))

out:

True

2.6 属性和方法

python中的对象通常都会有属性(python对象“内部”存储的其他对象)和方法(与对象内部对象有关的函数,相关的对象可以连接到对象内部数据)。
属性和方法可以通过像obj.attribute_name的语法进行调用。,也可以通过getattr函数获得。

2.7 鸭子方法

通常情况下,我们不会太过在意某个对象的具体类型,而是关心是否有某个特殊的方法或者行为。
比如:验证一个对象如果实现了迭代器协议,那一定是可以迭代的。

def initerable(obj):
    try:
        iter(obj)
        return True
    except TypeError:
        return False

对于绝大部分python容器的类型,都会返回True。
实例:
检查对象是否是一个列表(或者一个numpy数组),不是就将它转化为列表。

if not isinstance(x,list)and isiterable(x):
    x=list(x)

2.8 二元运算符和比较运算符

在这里插入图片描述

2.9 可变对象和不可变对象

python中的大部分对象,比如列表,字典,Numpy数组都是可变对象。大多数用户定义的类型(类)也是可变的。可变对象中包含的对象和值是可以修改的。

a_list=['foo',2,[4,5]]
a_list[2]=(3,4)
a_list

out:

['foo', 2, (3, 4)]

不可变类型的比如字符串、元组。

2.10 标量类型

python的标准库中拥有一个小的内建类型集合,用来处理数值数据,字符串,布尔值以及时间与日期。这类的‘单值’类型被称为标量类型,也叫标量。
标准python标量类型
在这里插入图片描述

2.11 数值类型

  1. 基础的python数值类型为intfloat
  2. 整数除法会把结果自动转为浮点数类型
in3/2
out:1.5

如果需要去除非整数部分结果的小数部分,可以使用整除操作符//

in3/2
out:1

2.12 字符串

python的字符串是不可变的,字符串是Unicode字符的序列,因此可以被看做是除了列表和元组以外的另一种序列:

a='python'
list(a)

out:

['p', 'y', 't', 'h', 'o', 'n']

切片:

a[:3]

out:

'pyt'

字符串前面加一个前缀符号r,表示这些字符为原生字符
r为raw的缩写,表示原生的。
字符串拥有一个format方法,可以用来代替字符串中的格式化参数,并产生一个新的字符串。

template='{0:2f} {1:s} are worth US${2:d}'
template.format(4.556, "Argenitine pesos", 1)

out:

'4.556000 Argenitine pesos are worth US$1'

2.13字节与Unicode

Unicode称为字符串类型的一等类,用于更的兼容处理ASCII和非ASCII文本。
可以使用encode方法将这个Unicode字符转化为UTF-8字节:

val_utf8=val.encode('utf-8')

如果知道一个字节对象Unicode的编码,可以使用decode方法进行解码。

val_utf8=val.decode('utf-8')

2.14时间和日期

python中内建的datetime模块,提供了datetime、data、和time类型。
datetime类型是包含时间信息和日期的,常用的方法为:

from datetime import datetime,date,time
dt=datetime(2020,2,29,20,30,21)
dt.day
dt.minute

out:

29
30

对于datetime实例,可以分别使用date和time获取它的date和time对象。

strtime方法将datetime转化为字符串:

dt.strftime('%m%d%Y %H:%M')

out:

'02292020 20:30'

字符串可以通过striptime转化为datetime对象:

datetime.strptime('20200329','%Y%m%d')

out:

datetime.datetime(2020, 3, 29, 0, 0)

在聚合或者分组时间序列数据的时候,常用到替代datetime时间序列的一些值,比如将分钟、秒替换成0.

dt.replace(minute=0,second=0)

out:

datetime.datetime(2020, 2, 29, 20, 0)

由于datetime.datetime是不可变类型,以上的方法都是产生新的对象,两个不同的datetime对象会产生一个datetime.timedelta类型的对象。

dt2=datetime(2020,3,11,15,22,30)
delta=dt2-dt
delta

out:

datetime.timedelta(10, 67929)

输出的结果表示时间间隔为10天又67929秒。

将timedelta加到一个datetime上传生一个新的对象:

dt+delta

out:

datetime.datetime(2020, 3, 11, 15, 22, 30)

datetime格式化详细说明
在这里插入图片描述

发布了12 篇原创文章 · 获赞 8 · 访问量 533

猜你喜欢

转载自blog.csdn.net/qq_42240729/article/details/105088207