numpy包:
####数组###########
from numpy import * shape #获取维度 size #获取长度 arange(0,5,1) #生成数组函数,从0到5以1为间隔 mgrid[0:5,0:5,0:5] #生成多维数组
np.zeros(2) #生成2个0
np.zeros([2,2]) #生成2*2个0 np.arange(3) #返回连续数列,输入为3则返回[0,1,2]
####矩阵##################### from numpy import random random.rand(5,5) #生成5*5矩阵,值为0-1 a=np.matrix([[1,2,3],[2,3,4],[4,5,6]]) #或者 np.mat([[1,2,3],[2,3,4],[4,5,6]])) 生成矩阵
a=np.mat(np.random.random(size=(3,3))) #生成随机矩阵 a=pd.DataFrame([[1,2,3],[2,3,4],[4,5,6]]) ##直接表示DataFrame
a.columns=[\'a\',\'b\',\'c\'] #修改列名
a.T # a的转置矩阵
a.I # a的逆矩阵
pd.DataFrame(a) ##转换为DataFrame
a*a.T # 矩阵相乘,T为逆矩阵 a.shape #获取矩阵的维度 np.exp(n) #e的n词次
np.power(x,3) #返回x的3次方
np.ones([3,3]) #生成3*3且值为1的2维数组,ones主要用于生成多维数组
a=np.zeros([2,2])
a=np.random.randint(3,10,size=[3,3]) #产生多维随机矩阵
a=np.random.random((3,3)) #生成多维的小数随机数组
#上面这条等价于: a=np.random.rand(3,3)
a[1, :] #取a的第二行
a[1 :] #取a第二行到末尾行
b=a.astype(np.float32) #将a的格式转化为float32
a.dtype #返回格式,输出float64
b.dtype #返回格式,输出float32
np.floor(1.5) #返回1
np.ceil(1.5) #返回2
a.describe() #对数据进行描述性统计
a.transpose() #对a矩阵进行转置
a.to_csv(\'C:/Users/1/Desktop/345.csv\', encoding=\'utf-8\', index=False) # 快速地将DataFrame导入csv文件
####其他#####################
set(a) #元素拆分
a.count #统计个数
pandas包:
a=pd.Series(np.random.randn(5),index=[\'a\',\'b\',\'c\',\'d\',\'e\']) #生成随机序列,\'a\'到\'e\'为列名,通过a[\'a\']来读取序列内容
d = {\'a\': 0, \'b\': 1, \'c\': 2}
pd.Series(d) #从dict生成series
d={\'one\':pd.Series([1,2,3],index=[\'a\',\'b\',\'c\']),\'two\':pd.Series([4,5,6],index=[\'a\',\'b\',\'c\'])}
pd.DataFrame(d) ##建立dataframe
b[\'three\']=b[\'one\'] ##增加列
del b[\'one\'] ##删除列
b.insert(3,\'oo\',b[\'two\']) ##插入列名为\'oo\',内容为b[\'two\']的列
b[0:1] ##返回第一行
b[\'one\'] 或 b.one ##返回列
b.head() ##默认前5行 b.head(10) 为前10行
b.tail() ##默认后5行
b[b.two==4] ##获取列名为\'two\'的值为4的行
b.loc[b[\'two\']== 4] ##返回列名为\'two\',且值为4的行 (类似于R语言dplyr包的filter函数)
b[\'two\'] #返回列名为two的列
b.loc[\'two\'] #返回行名为\'two\'的行
b.columns.size ##获取列数
b.ix[1] ##第2行 ix和iloc的区别在于假若index是int类的,则在排序的时候ix会按照index的来,这时并不完全按照实际的行和列顺序,同样出现字符型index的时候对ix也是如此
b.ix[1,2] ##第2行第3列
b.ix[:,2] ##第3列的所有行
b.icol(2) ##第3列
b.irow(2) ##第3行
b.describe() ##按列对数据进行汇总
b.T.describe() ##按行对数据进行汇总
b.sort(columns=\'A\') ##对A列进行排序
b.iloc[1,2] ##提取b的第2行第3列
b[b>1] ##提取b里面大于0的部分
b[b.A>0] ##提取A列大于0的行
b.groupby(\'two\').sum() ##对two分组并计算每组总和,与R语言和sql的groupby类似
pd.date_range("2016-07-01 00:00:00", "2016-07-31 23:58:00", freq=\'2min\') #返回时间范围内以2min作为时间间隔的所有时间
pd.date_range(start=\'20170101\',periods=10) #返回给定时间之后10天的内容
midx=pd.MultiIndex.from_product([[\'A\',\'B\',\'C\'],[\'X\',\'Y\']],names=[\'class1\',\'class2\']) #使用笛卡尔积创建MultiIndex对象
#笛卡尔乘积的作用:
以日期的缺失值查找为例,根据笛卡尔积作一个排列组合,然后和目标表进行关联,查找哪些数据缺失
例如有个考勤记录,记录了100个人2011年5月的考勤信息,理论上每个人每天都有考勤信息,实际上有人在某天的值缺失了。不管是一天一天的查询或者是一人一人的查询都比较麻烦,因此可以作每个人和每一天的笛卡尔积,然后和实际的表去关联,从而得出哪些值是缺失的。
df=pd.DataFrame({\'A\':[1,2,3],\'B\':[\'a\',\'b\',\'f\']})
df.T #转置
df.sort_values(by=\'A\',ascending=False) #对列名为\'A\'进行降序排序
df.isin([1,2,\'a\',\'b\']) #判断[1,2,\'a\',\'b\']是否在df之内
a=pd.read_csv(\'....\')
a[\'title\'].str.len().apply(lambda x:np.floor(x/19)) #返回a的title列的每条字符串的长度,进行除以19后进行取下限整数的结果
a[\'num\'].astype(\'str\') #类型转换,转为字符型
a.loc[1,\'price\'] #获取符合条件的行列
a.loc[a[\'day_of_week\'].isin([6, 7]), \'day_of_week_en\'] = 3 #将符合条件的行列值对应的内容进行替换
a.loc[a[\'clean\'].isin([\'0\']),\'clean\'] #同上
df1 = pd.DataFrame({\'B\': [\'B2\', \'B3\', \'B6\', \'B7\'],\'D\': [\'D2\', \'D3\', \'D6\', \'D7\'],\'F\': [\'F2\', \'F3\', \'F6\', \'F7\']},index=[2, 3, 6, 7])
df2 = pd.DataFrame({\'B\': [\'B2\', \'B3\', \'B6\', \'B7\'],\'D\': [\'D2\', \'D3\', \'D6\', \'D7\'],\'F\': [\'F2\', \'F3\', \'F6\', \'F7\']},index=[2, 3, 6, 7])
pd.concat([df1,df2],axis=0) #将不同的dataframe进行合并,axis为设置合并的维度
a=a.drop([\'g1\',\'g2\',\'g3\',\'g4\'],axis=1) #删除列名字为[\'g1\',\'g2\',\'g3\',\'g4\']的列
math包:
from math import *
math.tanh(x) #双曲正切函数
collection包:
import collections
point=collections.namedtuple(\'point\',[\'x\',\'y\']) #创建一个自定义的tuple对象
p=point(1,2)
p.x #返回1
p.y #返回2
c = Counter(\'abracadabra\')
c.most_common(3) #返回出现次数最多的前3项
其他:
yield介绍:
返回生成器,从第一次返回值之后,在下次循环时候从该位置开始继续迭代
def aa(ali):
for i in ali:
i=i+1
yield i+5
b=aa([1,2,3,4])
[w for w in b] #返回[7,8,9,10]
sys包:
import sys
sys.path.append(\'...\') #插入路径,用于读入自定义模块
sys.exit(1) #用于中途退出程序
os包:
import os
os.getcwd() #获取当前路径
os.chdir(\'...\') #更新路径
%run xx.py #运行路径下的py文件
os.path.join(\'aaa\',\'bbb\',\'ccc\') #返回\'aaa/bbb/ccc\'
os.listdir(\'C:/Users/1/Desktop/123/\') #返回某路径下的所有文件名
assert用法:
assert condition #如果condition为True,则进入下一步,若为False,则raise一个AssertionError错误
字符串的一些预处理方法:
a=[\'1\',\'2\',\'3\'] \' \'.join(a) #返回\'1 2 3\' 字符串
字典dict:
#获取key所对应的value dict_c={0:\'catering\', 1:\'facility\', 2:\'flow\', 3:\'manage\', 4:\'price\', 5:\'service\', 6:\'traffic\', 7:\'view\'} dict_c.get(0) #返回字典的key中0对应的值 dict_c.get(1) #返回字典的key中1对应的值
#获取字典的keys
list(dict_c.keys())
#获取字典的values
list(dict_c.values())
a={\'a\':1,\'b\':2}.items()
type(a) #返回dict_items
for i in a:
print(i) #通过循环获取a里的数据
dict.fromkeys(\'a\',10) #返回{\'a\': 10}
dict.fromkeys([\'a\',10]) #返回{\'a\': None, 10: None}
线性回归:
import numpy as np import statsmodels.api as sm import statsmodels.formula.api as smf dat = sm.datasets.get_rdataset("Guerry", "HistData").data results = smf.ols(\'Lottery ~ Literacy + np.log(Pop1831)\', data=dat).fit() print(results.summary())
onehot编码转换:
from sklearn import preprocessing enc = preprocessing.OneHotEncoder() enc.fit(a[[\'A\',\'B\']]) enc.transform(a[[\'A\',\'B\']]).toarray() print(enc.transform(a[[\'A\',\'B\']]).toarray())
assert断言的作用:
用于判定某布尔值必须为真,如果发生异常说明表达式为假,以如下代码为例
assert 1==1 #未返回值 assert 1==2 #返回错误