利用Python进行数据分析笔记:02Python语言基础(上)

一、IPython基础

1. 标准IPython快捷键:

标准IPython快捷键

2. IPython常用魔术命令:

IPython常用魔术命令

二、Python语言基础

1. 缩进,而不是大括号

Python使用缩进(tab或者空格)来组织代码,而不是用大括号:

for x in array:
    if x < pivot:
        less.append(x)
    else:
        greater.append(x)

一个冒号代表一个缩进代码块的开始,单个代码块必须保持相同的缩进,直到代码块结束。

2. 分号用于在一行内分隔多条语句

a = 5; b = 6; c = 7

3. 注释使用#号

print("Reached this line") # 简单的状态报告

4. 函数和对象方法的调用

调用函数时,向函数括号里传递0或多个参数,把返回值赋值给一个变量
函数传参可以是位置参数,也可以是关键字参数

result = f(x, y, z)
g()
result = f(a, b, c, d=5, e="foo") # 前三个使用了位置参数,后两个使用了关键字参数

对象内部函数,称为方法,可以访问到对象内部的内容

obj.some_method(x, y, z)

5. 变量和参数传递

在Python中对一个变量赋值时,是创建了一个指向等号右边对象的引用, 而不是拷贝

a = [1, 2, 3]
b = a
a.append(4)
b
### 可以发现b 也变成了[1, 2, 3, 4], a, b 两个引用指向同一个对象

6. isinstance函数检查对象是否是特定类型

a = 5
isinstance(a, int)  # 检查a 是不是整数类型
a = 5; b = 4.5
isinstance(a, (int,float)) #检查a的类型是否整型或者浮点型
isinstance(b, (int, float))#检查b的类型是否整型或者浮点型

7. 属性和方法

Python中的对象通常会有属性和方法。通过形如obj.attribute_name的语法进行调用:

a = "foo"
a.
getattr(a, "split")

8. 导入模块

模块是以.py为后缀名并包含Python代码的文件, 使用as关键字对导入内容给予不同变量名

# some_module.py
PI = 3.14159
def f(x):
    return x + 2
def g(a, b):
    return a + b
import some_module as sm
from some_module import PI as pi, g as gf
r1 = sm.f(pi)
r2 = gf(6, pi)
r1
r2

9. 二元运算符和比较运算

二元操作符
a = [1, 2, 3]
b = a
c = list(a)
a is b
a is not c # list 函数总是创建一个新的Python列表即一份拷贝,我们可以确定a与c是不同的
a == c # is和== 是不同的,相等不代表是同一个对象 

10. 可变对象和不可变对象

可变对象中包含的对象和值可以被修改,例如列表、字典、Numpy数组:

a_list = ["foo", 2, [4, 5]]
a_list[2] = (3, 4)
a_list
Out[34]: ['foo', 2, (3, 4)]

不可变对象不能被修改,如字符串、元组:

a_tuple = (3, 5, (4,5))
a_tuple[1] = "four"

TypeError: 'tuple' object does not support item assignment

可变对象可以修改但不建议修改避免副作用

11. 标量类型

标准Python标量类型
  • 数值类型int和float
ival = 17239871
ival ** 6
fval = 7.234
fval2 = 6.78e-5
3/2 #整数除法把结果自动转型为浮点数
3 // 2 #3整除2
  • 字符串str
a = 'one way of writing a string'
b = "another way"

### 含有换行的多行字符串可以用三个单引号或者三个双引号
c = """
This is a longer string that
spans multiple lines
"""
c
# 字符串是不可变的,无法修改一个字符串:
a = 'this is a string'
a[10] = 'f'#修改字符串会报错
b = a.replace('string', 'longer string') #a替换字符赋值给b
b 
  • 布尔值True、False
True and True
Out[67]: True
False or True
Out[68]: True
  • 类型转换
    str, bool, int, float 既是数据类型,也是将其他数据转为这类型的函数
s = '3.14159'
fval = float(s)
type(fval)
Out[3]: float
int(fval)
Out[4]: 3
bool(fval)
Out[5]: True
bool(0)
Out[6]: False
  • None
    None是null值类型。如果一个函数没有显式地返回值,它会隐式地返回None:
a = None
a is None
Out[8]: True
b = 5
b is not None
Out[10]: True

### None 还可以作为一个常用函数参数默认值:
def add_and_maybe_multiply(a,b,c=None):
    result = a + b
    if c is not None:
        result = result * c
    return result
add_and_maybe_multiply(1, 2)
Out[14]: 3
add_and_maybe_multiply(1, 2,5)
Out[15]: 15

None是NoneType类型的唯一实例

type(None)
Out[16]: NoneType
  • 日期和时间
    Python中内建的datetime模块提供了datetime,date,和time类型
from datetime import datetime, date, time

dt = datetime(2022, 4, 7, 22, 40, 31)

dt.day 
Out[31]: 7

dt.minute
Out[32]: 40

dt.date() #date方法获取日期
Out[33]: datetime.date(2022, 4, 7)

dt.time() #time方法获取时间
Out[34]: datetime.time(22, 40, 31)

### strftime 方法将datetime 转换为字符串
dt.strftime('%m/%d/%Y %H:%M')
Out[36]: '04/07/2022 22:40'

### strptime函数将字符串转换为datetime对象
datetime.strptime('20220407', '%Y%m%d')
Out[47]: datetime.datetime(2022, 4, 7, 0, 0)

### 将分钟、秒替换为0:
dt.replace(minute=0, second=0)
Out[49]: datetime.datetime(2022, 4, 7, 22, 0)

### 两个不同的datetime对象会产生
### 一个datetime.timedelta类型的对象:
dt2 = datetime(2022, 11, 15, 22, 30)
delta = dt2 - dt
delta
Out[54]: datetime.timedelta(days=221, seconds=85769)
#表示时间间隔为221天又85769秒

type(delta)
Out[55]: datetime.timedelta
### 将timedelta加到一个datetime上将产生一个新的对象:
dt
Out[56]: datetime.datetime(2022, 4, 7, 22, 40, 31)
dt + delta
Out[57]: datetime.datetime(2022, 11, 15, 22, 30)
Datetime格式化详细说明

你可能感兴趣的:(利用Python进行数据分析笔记:02Python语言基础(上))