-
函数可以作为参数传递给其他函数——传递的是计算逻辑而不是数据
def newFunc(oldFunc):
oldFunc(a,b) -
from time import *
这个* 收到time中的__all__=[]控制,如果函数不再all中就无法使用,但可以自行import函数进行使用 -
对集合的遍历
s[::-1]就是逆序遍历,可以省略最后的-1,表示正向遍历 -
__main__的功能
-
异常处理
-
JSON数据与字典互相转换
中文需要注意
由字典转为json:json.dump(data,ensure_ascii=False)
由json转为字典:json.loads(data)
-
私有成员或变量
以__开头 -
继承父类
class children(father):
属性
方法(self是必须的)
每个类中都有自己的魔法方法,就是python自带的方法
- 抽象类和抽象方法
def 类:
def 抽象方法(self):
pass
然后由类去实现这个抽象类
- 闭包
def outer(变量1):
def inner(变量2):
对变量处理
return inner
这种情况可以不用全局变量,防止全局变量的使用和修改
- 装饰器
类似Java的注解
def outer(func):
def inner():
处理
func()
处理
return inner
直接在func上加上
@outer 即可实现AOP
-
多线程
threading库
-
正则表达式
import re
二、特征工程
- 数据集
scikit-learn:数据集小,方便学习
Kaggle:巨量数据,竞赛平台,科学家多
UCI:覆盖广,数据多
三、数据处理
1.导入数据:读取CSV、Excel及两者的互换
一般是由pandas处理数据:import pandas as pd
pd.read_csv();pd.read_excel()
下面的df是data_framework()
两者的互换,在有CSV的方法中加上(encoding=“UTF-8”)
读取TXT文件,注意对TXT文件分割符的处理:
-
对库的认知
pandas库:对数据进行分析,包括清洗、处理、转换等多种方法
numpy库: 主要对数组和矩阵进行处理、分析 -
缺失值的识别与处理
识别:
data.isnull().any()--任何一列为空就统计;
data.isnull().any(axis=1)--行
在上面两行后面加上sum()可以统计出以后多少行或列
data.isnull().all()--只有全部列为空才统计;
处理:
3.1 删除:
data.dropna()--默认对行进行操作,默认只要一行有nan就删除
其余参数见下图
3.2 填充
3.2.1 fillna()
data.fillna(method=“backfill”)--根据前面或后面的数字进行填充
也可以用指定的数字进行填充,在fillna(数字)即可
3.2.1 replace(data.nan,指定数字)
3.2.1 sklearn的预处理方法,较复杂
- 异常值的识别与处理
识别:
import numpy as np
outlier = df[df[np.abs(df)>5].any(1)]
识别在【-5,5】以外的数字1
处理:
使用z_score
for col in df.columns:
df_current_col = df[col]
z_score = df[df.current.col - df.c.col.mean()] / df.c.c.std()
df_zscore=z_score.abs()>2
outlier = df[df_zscore]
#删除异常值
print(df[df_zscore==False])
- 重复值的识别与处理
df.duplicate()会让重复的索引为true
df[df.duplicate()] 会取得重复的值
删除重复值:
直接在原数据上进行删除:
- 数据切片
df--数据切片
获取列名和索引名:
获取多行和行、列
索引的获取:iloc,loc的区别
根据条件获取某行数据:
取得某列数据;
数据连接:
pd.merge()
- 数据的合并
pd.contace()可以实现纵向、横线的连接
纵向连接:类似SQL的union
- 数据的重塑
行列的互换
行转列:df.pivot(),不变的是Index,要转的是columns,colums的值是values
pd.pivot_table()可以先对数据进行处理
列转行:先对源数据进行索引重置
pd.melt()
stack()和unstack()也可以实现上面的操作:
如图:可以看出函数的相关作用:
unstack()
- 数据排序
df.sort_values()
多排序规则:列表相应对应
排名:
df.rank()--有意思,同样的排名有的是取平均值,
值出现次数的添加
- pandas导入数据的常见问题
对分隔符的正则表示
数据中间有换行符和空格--使用applymap()
导入的数据没有表头:
自己命名列名
转换导入的数据的类型:
- 数据分组&聚合&加权平均
groupby()
聚合函数:同时对多列数据进行处理
加权平均:
np.average()
分组加权平均:
先加权平均,再加上分组
- 累计求和
对某一列累计求和;以及排序后累计求和
分组累计求和:这是有点难得
- 分箱、分频
等距分箱;等频分箱
等距:pd.cut()
等频:
-
数据交叉表与透视表
可以使用pivot_table(),具体操作需要时再看 -
数据过滤
df.where()
可以多条件过滤
找出一行最大或者最小
score表示数据;Score表示对那列找出最大