Python数据分析与挖掘实战——第二章

python基本操作

1. for  i  in range( a, b, c)   a为首项 c为公差 不超过b-1

2. 行内函数

f = lambda x:x+2  定义f(x) = x+2

g = lambda x,y:x+y

3. 数据结构——list tuple dictionary set

  • list/tuple

列表可以被修改,元组不可以

列表是=[]  元组是=()

可直接转换 list('ab')  或 tuple('ab')

  • list
a.count(1)

#列表解析

b = [i+2 for i in a]    #a是一个列表
  • dict

转换为dict —— dict 或者dict.fromkeys

  • set

①不重复  ②无索引 

格式为= {    }

4. 函数式编程

  • 组成:lambda()  map()  reduce()  filter()
  • map()   效率更高     用于逐一遍历
b = [i+2 for i in a] 对应的map

b = map(lambda x : x+2,a)
  • reduce()  用于递归计算
reduce(lambda x,y:x*y,range(1,n+1))
  • filter() 用于过滤
b = filter(lambda x>5 and x<8 , range(1,10))

也可使用列表解析

b = [i for i in range(1,10) if i >5 and i <8]
  • map()、reduce()、filter()的循环速度要比python自带的for或while快得多

5. 使用pandas要显示所有属性列或行时

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

python数据分析工具

numpy、scipy、matplotlib、pandas、statsModels、scikit-Learn、Kears、Gensim、Pillow(原PIL)

一、 Numpy

多维数组功能

基本操作

  • 创建数组  np.array([1,2,3])
  • 选取数组  a[:,3]
  • 最大最小值  a.min()   a.max()
  • 排序,此操作直接修改原数组   a.sort()
  •  

二、Scipy

最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解

Scipy依赖Numpy

三、matplotlib

主要用于二维绘图

中文不显示的问题

plt.reParams['font.sans-serif'] = ['SimHei']    # 如果中文字体是SimHei

负号显示为方块

plt.rcParams['axes.unicode_minus']= False

 

四、Pandas

基本数据结构  SeriesDataFrame

着眼于数据的读取、处理和探索

1. Series:

    序列  类似一维数组  

    有index用于定位元素,index可以为数字,也可以为其他,类似主键

    创建序列  s = pd.Series([1,2,3],index = ['a','b','c'])

2. DataFrame:

    表格  类似二维数组

    每一列都是一个series   本质是series的容器

    每个series有唯一的表头,用于区分  多个series的index相同

    创建表  d = pd.DataFrame([1,2,3],[4,5,6],colume = ['a','b','c'])

也可以直接  d = pd.DataFrame(s)

d.head()

d.describe()

pd.read_excel('filename')

pd.read_csv('filename',encoding = 'utf-8)

补充操作

pd.notnull(x)  得到x的不为空的true和false

x[pd.notnull(x)]  可得到x中不为空的项  list的话只能根据int来进行索引 series可以通过true和false

map接收一个序列 list或者numpy的array

dataFrame的排序 dataFrame.sort_values(['confidence','support'], ascending = False)

可用dataFrame[[index1,index2]] 访问

d.prod(axis=1,numeric_only=True) 每行的每个元素累乘

五、StatsModels     

着眼于数据的统计建模分析,支持与pandas进行数据交互

依赖于pandas和pasty

六、scikit-Learn

机器学习相关库,提供完整的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析

依赖于numpy、scipy、matplotlib

1. 所有模型的接口:

model.fit():训练数据  fit(X,y)——监督学习    fit(X)——非监督学习

2. 监督学习

model.predict(x_new) 预测新样本

model.predict_proba(x_new) 预测概率

model.score() 得分越高越好

3. 非监督学习

model.transform()  从数据中学习到新的“基空间”

model.fit_transform()  从数据中学到新的基并将这个数据按照这组基进行转换

七、Keras

人工神经网络  基于theano

不仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等

model.predict()给出概率

model.predict_classes()给出分类结果  格式是[[y1],[y2],[y3]```[yn]] 可以model.predict_classes(x).reshape(len(x)) 变为[y1,y2,y3,```,yn]的格式

八、Gensim

处理语言方面的任务,如文本相似度计算,LDA,Word2Vec

猜你喜欢

转载自blog.csdn.net/qq_22527013/article/details/88343056