频道栏目
首页 > 资讯 > Python > 正文

浅谈python中的数据

18-07-27        来源:[db:作者]  
收藏   我要投稿
#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
相关TAG标签
上一篇:在centos7中查找文件、安装卸载yum等命令
下一篇:传统数据库和Hive到底有哪些区别
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站