赞
踩
- #coding:utf-8
- import scrapy,math,string
- import lxml,scipy
- import re,json
- import pandas as pd
- import numpy as np
- # class Test(object):
- # def start(self,num):
- # print(num)
- # numbers = np.array(num)
- # target = input('请输入以上数组任意两个元素的和')
- # for i in range(0,len(num)):
- # for j in range(i+1,len(num)):
- # if int(num[i])+int(num[j])==int(target):
- # print('(index1=%s,index2=%s)'%(i+1,j+1))
-
- # test=Test()
- # n=0
- # a=[]
- # while(n!='#'):
- # n=input('输入#结束:')
- #
- # if n.isdigit():
- # a.append(n)
- # print(a)
- # else:
- # print('请重新输入:')
- #
- # test.start(a)
-
-
-
-
-
-
-
-
-
- # python 数据分析 -----1
- #
- # Numpy---提供常用的数值数组、矩阵等函数
- # 优点:是基于向量化的运算
- # 进行数值运算时Numpy数组比list效率高
- # 基本功能:
- # 快速高效的多维数组对象ndarray
- # 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
- # 用于读写硬盘上基于数组的数据集的工具
- # 用于将c\c++\Fortran代码集成到python的工具
- # 除了为python提供快速的数组处理能力,Numpy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器
-
- # 效率对比
- # 三种数据结构:list/array/numpy.array
- # 三种方法求和:for/sum/numpy.sum
-
- list=[1,2,3,4,5]
- a=np.array(list)
-
- #print(type(a))
- #若使用列表求其平方,则需要for循环
- #不需要编写循环即可对数据执行批量运算
- # 大小相等的数组之间的任何算术运算都会将运算应用到元素级
-
- # 数组与标量的算术运算也会将那个标量值传播到各个元素
- # print(1/a)
- #a2=a**2
- #print(a2)
-
- #Numpy的ndarray基本的索引和切片
-
- #切片
- arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
- print(type(arr[0]))#一维数组
- print(arr[1,0])#相当于取下标元素
- print(arr[:2,:2])#取前两行前两列元素
- arr1 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
- print (arr1[0]) # 结果是个2维数组
- print(arr1[1,0,1])
- old_values=arr1[0].copy()
- print(old_values)
-
- #布尔型索引
- name_arr=np.array(['A','B','C','D','E'])
- rand_arr=np.random.randn(5,4)#生成一个7*4的随机数组
- print(rand_arr)
- print(name_arr=='B')
- print(rand_arr[name_arr=='B'])#利用布尔数组选择行(索引 2 为True,故打印第二行)
- print(rand_arr[name_arr=='B',:2])#增加限制打印列的范围
- print(rand_arr[(name_arr=='B')|(name_arr=='E')])#逻辑运算混合结果
- rand_arr[name_arr=='A']=5
- print(rand_arr)
-
- #花式索引(Fancy indexing)是一个Numpy术语,它指的是利用整数数组进行索引
- narr=np.empty((8,4,2))
- for i in range(8):
- narr[i]=i
- print(narr)
- index=[[0,-3,4],[1,2,3],[1,1,0]]
- print(narr[index])
- num=np.arange(32).reshape((8,4))#将0-31的整数变形为8x4数组
- print(num)
- print(num[[1,5,7,6]][:,[0,3,1,2]])#与下行等价
- print(num[np.ix_([1,5,7,6],[0,3,1,2])])#第1,5,7,6行的第0312列
-
- #Numpy的ndarray数组转置和轴对换
- # redot=np.dot(num.T,num)矩阵点积
- tri=np.arange(32).reshape((4,2,4))
- print(tri)
- tran=tri.transpose((1,0,2))
- print(tran)
- # tran=num.transpose((1,0))
- # print(tran)
- # swap=num.swapaxes(0,1)#直接交换第1和第2个坐标
- # print(swap)
- # 详细解释:
- # arr数组的内容为
- # - a[0][0] = [0, 1, 2, 3]
- # - a[0][1] = [4, 5, 6, 7]
- # - a[1][0] = [8, 9, 10, 11]
- # - a[1][1] = [12, 13, 14, 15]
- # transpose的参数为坐标,正常顺序为(0, 1, 2, ... , n - 1),
- # 现在传入的为(1, 0, 2)代表a[x][y][z] = a[y][x][z],第0个和第1个坐标互换。
- # - a'[0][0] = a[0][0] = [0, 1, 2, 3]
- # - a'[0][1] = a[1][0] = [8, 9, 10, 11]
- # - a'[1][0] = a[0][1] = [4, 5, 6, 7]
- # - a'[1][1] = a[1][1] = [12, 13, 14, 15]
-
- #Numpy的ndarray快速的元素级数组函数
- '''
- rint 将各元素值四舍五入到最接近的整数,保留dtype
- modf 将数组的小数部分与整数部分以两个独立数组的形式返还
- isnan 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔类型数组
- isfinite,isinf分别返回一个表示“哪些元素是有限的(非inf,非NaN)”或“哪些元素是无穷的”的布尔型数组
- cos,cosh,sin,sinh,tan,tanh普通型或双曲线型三角函数
- logical_not 计算各元素not x的真值,相当于-arr【数组取反】
- '''
-
- '''
- #Scipy 是一种使用Numpy来做高等数学、信号处理、优化、统计的扩展包http://docs.scipy.org/doc/【具体使用可查看官方文档】
- # Linear Algebra(scipy.linalg)
- # Statistics(scipy.stats)
- # spatial data structure and algorithms(scipy.spatial)
- from scipy import linalg
- A=np.array([[1,2],[3,4]])
- print(A)
- #求行列式的值
- result=linalg.det(A)
- print(result)
- '''
-
- '''
- #Pandas 是一种构建于Numpy的高级数据结构和精巧工具,快速简单的处理数据
- # 支持自动或明确的数据对齐的带有标签轴的数据结构。
- # 整合的时间序列功能
- # 以相同的数据结构来处理时间序列和非时间序列
- # 支持传递元数据(坐标轴标签)的算数运算和缩减。
- # 灵活处理丢失数据
- # 在常用的基于数据的数据库(例如SQL)中的合并和其他关系操作
- # 数据结构:Series和DataFrame
- s=pd.Series([1,3,5,np.nan,8])
- #np.nan 生成一个空的字符
- #print(s)
- dates=pd.date_range('2018.7.20',periods=8)
- #print(dates)
- #DataFrame(data,index,columns)生成一个类似于数据库表的数据结构(矩阵)
- df=pd.DataFrame(np.random.randn(8,5),index=dates,columns=list)
- print(df)
- #df.head(n)选取前n行
- print(df.head(1))
- # df.tail(n)选取后n行
- print(df.tail(1))
- # df.describe()查看概述 count,mean,std,min,25%,50%,75%,max(计数,均值,标准差,五数概括)
- print(df.describe())
- # df.sort_values(by=1)排序
- print(df.sort_values(by=1))
- # df.T转置
- print(df.T)
- '''
- #matplotlib Python绘图库
-
-
- #nltk自然语言处理工具包(Natural Language Toolkit)
- # 安装:pip install -U nltk
- # 引入:import nltk
- # 下载预料库:nltk.download() 大概占用存储空间2G
- # 应用:文本提取、词汇切分、词频分析、词袋模型、情感分析
-
- #igraph 图计算和社交网络分析http://igraph.org/python/
- # 安装:pip insatll -U python-igraph
- # conda install -c marufr python-igraph=<特定版本>
- # from igraph import *
-
-
- #Scikit-learn 是建立在Scipy之上的一个用于机器学习的Python模块(分类,聚类,回归,降维等算法)
- #安装:pip install -U scikit-learn
- # conda install scikit-learn
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。