安装

视频链接:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/

pip install numpy
pip install pandas

Numpy 学习

Numpy属性

import numpy as np

array = np.array([[1,2,3],
[2,3,4]])
print(array)
print('number of dim:',array.ndim)//几维度
print('shape:',array.shape)//行数列数
print('size:',array.size)//多少个元素

Numpy创建array

impport numpy as np

a = np.array([2,23,4],dtype=np.int)
print(a)
print(a.dtype)
a = np.zeros((3,4))//三行四列的0矩阵
a = np.ones((3,4),dtype=np.int16)//三行四列的1矩阵
a = np.empyt((3,4))//三行四列非常接近0的矩阵
a = np.arrange(10,20,2)//[10 12 14 16 18]
a = np.arrange(12).reshape((3,4))//三行四列从0~11
a = np.linspace(1,10,5)//从1到10分成5段的数列,[1. 3.25 5.5 7.75 10.]

Numpy 基础运算1

import numpy as np

a = np.array([10,20,30,40]
b = np.arrange(4)
print(b<3)//[True True True False]
print(b == 3)//[False False False True] c = a + b
print(c)//[10 21 32 43] c = b**2//b的平方,[0 1 4 9]
c = 10*np.sin(a)//正弦 d = np.array([[1,1],
[0,1] ])
e = np.arrange(4).reshape((2,2))
f = d*e
f_dot = np.dot(e,f)
f_dot_2 = e.dot(f)//运算和f_dot完全相同
print(f)//[[0 1][0 3]]
print(f_dot)//[[2 4][2 3]],只是矩阵的运算 a = np.random.random((2,4))//2行4列0~1范围的随机值
np.sum(a)//求和
np.min(a)//求最小
np.max(a)//求最大 np.sum(a,axis=1)//在行中求和,1代表行,0代表列

Numpy 基础运算2

import numpy as np

A = np.arrange(2,14).reshape((3,4))
np.argmin(A)//最小值的索引
np.argmax(A)//最大值的索引
print(np.argmin(A))//0
np.mean(A)//平均值
A.mean()//平均值
np.median(A)//中位数 7.5
np.cumsum(A)//逐步加进去 [2 5 9 14 20 27 35 44 54 65 77 90]
np.diff(A)//每两个数之间的差 [[1 1 1][1 1 1][1 1 1]]
np.nonzero(A)//找出非零元素的位置
np.sort(A)//逐行排序
np.transpose(A)//A的转置
A.T//A的转置
(A.T).dot(A)//A的转置与A相乘
np.clip(A,5,9)//小于5的数赋值为5,大于9的数赋值为9,中间值不变
np.mean(A,axis=0)//对列取平均值 [10. 9. 8. 7.]
print(A)

Numpy 索引

import numpy as np

A = np.arrange(3,15)
A[3]//6
A = A.reshape((3,4))
A[2]//[11 12 13 14]
A[1][1]//8
A[1,1]//8
A[2,:]//第2行的所有数
A[1,1:3]//[8 9] for row in A:
print(row)//依次打印每一行 for column in A.T:
print(column)//依次打印每一列 A.flatten()//又转成了一维 [3 4 5 6 7 8 9 10 11 12 13 14] for item in A.flat:
print(item)//3-14依次每行打印出来,A.flat返回了一个迭代器

Numpy array 合并

import numpy as np

A = np.array([1,1,1])
B = np.array([2,2,2]) C = np.vstack((A,B))#[[1 1 1][2 2 2]] vertical stack上写合并
D = np.hstack((A,B))#[1 1 1 2 2 2] horizontal stack左右合并
print(A.shape,C.shape,D.shape)#(3,)(2,3)(6,) #把横向的数列转成纵向的 np.newaxis增加一个维度 还有reshape(3,1)
A[np.newaxis,:].shape #(1,3)
A[:,np.newaxis].shape #(3,1) [[1][1][1]] E = np.concatenate((A,B,B,A),axis=0)#指定方向合并(左右或者上下)

Numpy array 分割

import numpy as np

A = np.arange(12).reshape((3,4))
np.split(A,2,axis = 1)#横向等分成两段 [array([[0,1][4,5],[8,9]]),array([[2,3][6,7],[10,11]])] 横向等分成两段 np.array_split(A,3,axis = 1)#横向不等分成两段 [array([[0,1],[4,5],[8,9]]),array([[2],[6],[10]]),array([[3],[7],[11]])] np.vsplit(A,3)#纵向分为三段
np.hsplit(A,2)#横向分为两段

Numpy copy & deep copy

import numpy as np

a = np.arange(4)
b = a
c = a
d = b
a[0] = 1
b is a#True b就是a b[0] = 11 a,b,c,d就是一个变量 引用 b = a.copy() # deep copy
b is a # False a和b是两个变量,没有关联

Pandas 学习

Pandas 选择数据

import pandas as pd
import numpy as np dates = pd.date_range('20130101',periods = 6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,cloumns=['A','B','C','D']) print(df) # A B C D
# 2013-01-01 0 1 2 3
# 2013-01-02 4 5 6 7
# 2013-01-03 8 9 10 11
# 2013-01-04 12 13 14 15
# 2013-01-05 16 17 18 19
# 2013-01-06 20 21 22 23 print(df.A)#或者 print(df['A']) # 2013-01-01 0
# 2013-01-02 4
# 2013-01-03 8
# 2013-01-04 12
# 2013-01-05 16
# 2013-01-06 20 df[0:3],df['20130101':'201304']是同样的操作 # select by label:loc 指定标签
print(df.loc['20130102'])
#A 4
#B 5
#C 6
#D 7 print(df.loc[:,['A','B']])#所有行的A列和B列显示出来
print(df.loc[‘20130102’,['A','B']])#行索引为‘20130102’的A列和B列显示出来
#A 4
#B 5 #select by position:iloc 指定位
print(df.iloc[3])#打印第四行数据
print(df.iloc[3,1])#打印第四行第二列数据 print(df.iloc[1,3,5])#第2,4,6行打印 #mixed selection:ix 混合位和标签
print(df.ix[:3,['A','C']])#0-2行 A/C列 #Boolean indexing 通过真值打印
print(df[df.A > 8])# 打印A列中大于8的行的所有信息

Pandas 设置值

import pandas as pd
import numpy as np dates = pd.date_range('20130101',periods = 6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,cloumns=['A','B','C','D']) df.iloc[2,2] = 111#修改第3行第3列数值
df.iloc['20130101','B'] = 222
df[df.A > 4] = 0# A列大于4的行的所有信息赋值为0
df.A[df.A > 4] = 0# A列大于4的行的A列赋值为0
df['F'] = np.nan #F列值全为NaN(没有此列就追加此列)
df['E'] = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130101',periods=6))#追加E列,列的值为1,2,3,4,5,6

Pandas处理丢失数据

import pandas as pd
import numpy as np dates = pd.date_range('20130101',periods = 6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,cloumns=['A','B','C','D']) df.iloc[0,1] = np.nan
df.iloc[1,2] = np.nan#设置第1行2列值为NaN print(df.dropna(axis=0,how='any'))#丢掉有NaN值的行
#how={'any','all'} any表示只要有就满足 all表示所有都是才满足 print(df.fillna(value=0))#填充NaN值为0
df.isnull()#df中是否有NaN,列出所有
np.any(df.isnull()) == True#只要有NaN就返回True

Pandas 导入导出


Pandas 合并 concat


Pandas 合并 merge


Pandas plot 画图


Numpy and Pandas的更多相关文章

  1. python安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  2. 如何快速地从mongo中提取数据到numpy以及pandas中去

    mongo数据通常过于庞大,很难一下子放进内存里进行分析,如果直接在python里使用字典来存贮每一个文档,使用list来存储数据的话,将很快是内存沾满.型号拥有numpy和pandas import ...

  3. numpy、pandas

    numpy: 仨属性:ndim-维度个数:shape-维度大小:dtype-数据类型. numpy和pandas各def的axis缺省为0,作用于列,除DataFrame的.sort_index()和 ...

  4. [转] python安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  5. 1.理解Numpy、pandas

    之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...

  6. numpy和pandas简单使用

    numpy和pandas简单使用 import numpy as np import pandas as pd 一维数据分析 numpy中使用array, pandas中使用series numpy一 ...

  7. Python入门之安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了. 首要条件,python版本必 ...

  8. python及numpy,pandas易混淆的点

    https://blog.csdn.net/happyhorizion/article/details/77894035 初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可 ...

  9. 【转载】python安装numpy和pandas

    转载:原文地址 http://www.cnblogs.com/lxmhhy/p/6029465.html 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装 ...

  10. linux离线搭建Python环境及安装numpy、pandas

    1.安装python2.7.3 Cent OS 6.5默认装的有python2.6.6,需要重新安装python2.7.3下载地址:https://www.python.org/downloads/s ...

随机推荐

  1. 使用Hexo + GitHub Pages 搭建个人博客

    一.前言 之前是在CSDN上写博客的,但是无奈其广告满天飞,还有因为个人不太喜欢CSDN博客里的一些东西,加上看到很多技术大牛都有自己的个人博客,于是乎!便想着搭建一个自己的个人博客.其实之前写博客还 ...

  2. redis学习指南

    一.redis安装 # 安装最新版 yum install -y epel-release vim atop htop net-tools git wget gcc-c++ yum clean all ...

  3. Flume(2)-拓扑结构与Agent内部原理

    一. 拓扑结构 1. 串行模式 这种模式是将多个flume给顺序连接起来了,从最初的source开始到最终sink传送的目的存储系统.此模式不建议桥接过多的flume数量, flume数量过多不仅会影 ...

  4. Linux中的阻塞机制

    我们知道在字符设备驱动中,应用层调用read.write等系统调用终会调到驱动中对应的接口. 可以当应用层调用read要去读硬件的数据时,硬件的数据未准备好,那我们该怎么做? 一种办法是直接返回并报错 ...

  5. vs code 写C#心得

    !!!官方指南请访问: https://docs.microsoft.com/zh-cn/dotnet/core/index code runner 插件 ---------------------- ...

  6. CRLF注入学习

    预备 <CRLF>是换行符,CRLF注入顾名思义就是把换行符写入,那么要把换行符写入到哪里呢?看看下面的http头 可以看到,每一行都包含特定的头部信息,然后以换行为标志写入其他的头部信息 ...

  7. C#目录:藏锋

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 此为C#专题的分类,只会记录我对于C#一些需求的解决方案,并非全部学习资料(全部可以参考微软提供的API) 主 ...

  8. ES6 localStorage 类库

    无意中看到的,记录下. 用到了es6语法.支持在js中写构造函数 class CovLocalDB { constructor (name) { this.LS = null this.name = ...

  9. 【redis的链接】redis的两种连接方法

    执行redis-server /etc/redis.conf开启服务 方法一: [root@zhangmeng ~]# redis-cli > > quit 方法二: [root@zhan ...

  10. Scrapy爬取美女图片第三集 代理ip(下)

    这是我的公众号获取原创保护的首篇文章,原创的肯定将支持我继续前行.现在写这篇文章的时间是晚上11:30,写完就回寝室休息了,希望更多的朋友与我一起同行(当然需要一个善良的妹子的救济).(我的新书< ...