anaconda集成了工具包,适合入门,python比较少东西

pip镜像:

pip3 install statsmodels -i https://pypi.tuna.tsinghua.edu.cn/simple

基础语法

数据类型

  • Number(数字):int、float、bool、complex(复数)

  • String(字符串)

  • List(列表)

  • Tuple(元组)

  • Set(集合)

  • Dictionary(字典)

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

type(a)
isinstance(a, int)

字符串

不可改变

​```
多行字符串
啦
​```
转义符 \

'a' + 'b'

'a' * 3

索引方式:

左往右0开始,右往左-1开始

a[头下标:尾下标:步长]

print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[2:])             # 输出从第三个开始后的所有字符
print(str[1:5:2])          # 输出从第二个开始到第五个且每隔一个的字符(步长为2)

print(r'hello\nrunoob')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

list

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

a[2:5] = [13, 14, 15]
a[2:5] = []   # 将对应的元素值设置为 []

inputWords[-1::-1] # 倒序 runoob like I

Tuple

元组不可更改,其他与list类似

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')
print (tuple + tinytuple) # 连接元组

Set

不重复的set

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites)   # 输出集合,重复的元素被自动去掉

# 成员测试
if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素

字典

key,value

dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2]     = "2 - 菜鸟工具"

tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}


print (dict['one'])       # 输出键为 'one' 的值
print (dict[2])           # 输出键为 2 的值
print (tinydict)          # 输出完整的字典
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值

类型转换

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数 描述
int(x [,base]) 将x转换为一个整数
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

数据分析

NumPy

支持纬度数组和矩阵运算,对数组运算提供数学函数库

  • 强大的N纬数组对象ndarray
  • 广播函数
  • 整合C、C++代码的工具
  • 线性代数、傅里叶变换,随机数生成等
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

>>> from numpy import *
>>> eye(4)
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])

Ndarray对象

同类型数组的集合,0下标开始

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名称 描述
object 数组或嵌套的数列
dtype 数组元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok 默认返回一个与基类类型一致的数组
ndmin 指定生成数组的最小维度
# 多于一个维度  
import numpy as np 
a = np.array([[1,  2],  [3,  4]])  
print (a)
[1 2 3]

a = np.array([1,  2,  3], dtype = complex)  
print (a)
[1.+0.j 2.+0.j 3.+0.j]

数据类型

数据类型对象dtype

描述与数组对应的内存区域怎么使用

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
  • 如果数据类型是子数组,那么它的形状和数据类型是什么。
numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
# 使用标量类型
dt = np.dtype(np.int32)
print(dt)
int32

# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('i4')
print(dt)
int32

import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
# [('abc', 21, 50.0), ('xyz', 18, 75.0)]
print(a)

int8, int16, int32, int64 四种数据类型可以使用字符串 ‘i1’, ‘i2’,’i4’,’i8’ 代替

字符 对应类型
b 布尔型
i (有符号) 整型
u 无符号整型 integer
f 浮点型
c 复数浮点型
m timedelta(时间间隔)
M datetime(日期时间)
O (Python) 对象
S, a (byte-)字符串
U Unicode
V 原始数据 (void)

数组属性

数组的纬度成为秩(轴的数量),二维数组的秩为2

ndarray对象的属性:

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
a = np.arange(24)  
print (a.ndim)             # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3)  # b 现在拥有三个维度
print (b.ndim)

a = np.array([[1,2,3],[4,5,6]])  
print (a.shape)
# (2, 3)

a = np.array([[1,2,3],[4,5,6]]) 
a.shape =  (3,2)  
#or a = a.reshape(3,2)  
print (a)
[[1 2]
 [3 4]
 [5 6]]

Pandas

pip install pandas
import pandas

pandas.__version__  # 查看版本

Series

表格中的一列,一维数组,任何类型

pandas.Series( data, index, dtype, name, copy)

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。

Pandas 数据结构 – Series | 菜鸟教程 (runoob.com)

NumPy 数组属性 | 菜鸟教程 (runoob.com)

DataFrame

表格型的数据结构

D天

da.date_range('2016/7/1', 10, freq = '3D'),频率默认是天

过滤

time.truncate(before='---', after='xxx')

数据重采样

  • 时间频率转换
pd.date_range('x/x/x', periods=90, freq='D')
ts=pd.Series(np.random.randn(len(rng)), index=rng)


ts.resample('M').sum()

基本方法

df.count() #非空元素计算
df.min() #最小值
df.max() #最大值
df.idxmin() #最小值的位置,类似于R中的which.min函数
df.idxmax() #最大值的位置,类似于R中的which.max函数
df.quantile(0.1) #10%分位数
df.sum() #求和
df.mean() #均值
df.median() #中位数
df.mode() #众数
df.var() #方差
df.std() #标准差
df.mad() #平均绝对偏差
df.skew() #偏度
df.kurt() #峰度
df.describe() #一次性输出多个描述性统计指标
fillna(value, inplace=True),直接用value覆盖原值的缺失值

csv

header int或者int列表,默认由推断出来。这是用于规定列名的行号。
names 类似于数组结构,选择性使用。这是要使用的列名称列表,与header共同使用。
index_col 整数或者字符串或者整数/字符串列表。指定用作的行标签的列。