numpy和pandas简单使用
numpy和pandas简单使用
import numpy as np
import pandas as pd
一维数据分析
numpy中使用array, pandas中使用series
numpy一维数组array
1.基本使用
a= np.array([2,3,4,5])
a
array([2, 3, 4, 5])
a[0]
2
a[1:3]
array([3, 4])
a.dtype
dtype('int64')
2.向量化计算
a=np.array([1,2,3])
b=np.array([4,5,6])
a + b
array([5, 7, 9])
a * b
array([ 4, 10, 18])
3.统计功能
np.mean(a)
2.0
np.std(a)
0.816496580927726
pandas一维数据结构series
1.基本使用
stocks=pd.Series([54.74,190.0,173.14,1050.3,181.86,1139.49],index=['腾讯','阿里巴巴','苹果', '谷歌', 'Facebook', '亚马逊'])
- 描述统计信息
stocks.describe()
count 6.000000
mean 464.921667
std 491.284358
min 54.740000
25% 175.320000
50% 185.930000
75% 835.225000
max 1139.490000
dtype: float64
- 按照位置取值
stocks.iloc[0]
54.74
- 按照索引取值
stocks.loc['腾讯']
54.74
2.向量化计算
s1 = pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
s2 = pd.Series([10,20,30,40], index=['a', 'b', 'e', 'f'])
s3 = s1 + s2
s3
a 11.0
b 22.0
c NaN
d NaN
e NaN
f NaN
dtype: float64
- 相同index名称相加,index不同默认结果为NaN
- 下面两种去除NaN的方法
s3.dropna()
a 11.0
b 22.0
dtype: float64
s3 = s1.add(s2, fill_value=0)
s3
a 11.0
b 22.0
c 3.0
d 4.0
e 30.0
f 40.0
dtype: float64
二维数据分析
numpy二维数组array
1.基本使用
a = np.array([[1,2,3, 4],
[5,6,7,8],
[9,10,11,12]])
a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
a[0,2]
3
- 取第一行
a[0,:]
array([1, 2, 3, 4])
- 取第一列
a[:, 0]
array([1, 5, 9])
- 按行计算均值 axis=1 按行 axis=0 按列
a.mean(axis=1)
array([ 2.5, 6.5, 10.5])
pandas二维数据结构DataFrame
1.基本使用
- 向DataFrame中传入一个字典
salesDict = {
'购药时间': ['2018-01-01 星期五', '2018-01-02 星期六', '2018-01-06 星期三'],
'社保卡号': ['001616528', '001616528', '0012602828'],
'商品编码': [236701, 236701, 236701],
'商品名称': ['强力VC银翘片', '清热解毒口服液', '感康'],
'销售数量': [6,1,2],
'应收金额': [82.8,28,16.8],
'实收金额': [69, 24.64, 15]
}
saleDf=pd.DataFrame(salesDict)
saleDf
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 购药时间 | 社保卡号 | 商品编码 | 商品名称 | 销售数量 | 应收金额 | 实收金额 | |
|---|---|---|---|---|---|---|---|
| 0 | 2018-01-01 星期五 | 001616528 | 236701 | 强力VC银翘片 | 6 | 82.8 | 69.00 |
| 1 | 2018-01-02 星期六 | 001616528 | 236701 | 清热解毒口服液 | 1 | 28.0 | 24.64 |
| 2 | 2018-01-06 星期三 | 0012602828 | 236701 | 感康 | 2 | 16.8 | 15.00 |
- 使用OrderedDict保证数据有序
from collections import OrderedDict
salesOrderDict = OrderedDict(salesDict)
salesDf = pd.DataFrame(salesOrderDict)
salesDf
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 购药时间 | 社保卡号 | 商品编码 | 商品名称 | 销售数量 | 应收金额 | 实收金额 | |
|---|---|---|---|---|---|---|---|
| 0 | 2018-01-01 星期五 | 001616528 | 236701 | 强力VC银翘片 | 6 | 82.8 | 69.00 |
| 1 | 2018-01-02 星期六 | 001616528 | 236701 | 清热解毒口服液 | 1 | 28.0 | 24.64 |
| 2 | 2018-01-06 星期三 | 0012602828 | 236701 | 感康 | 2 | 16.8 | 15.00 |
- 统计功能
salesDf.mean()
商品编码 236701.000000
销售数量 3.000000
应收金额 42.533333
实收金额 36.213333
dtype: float64
- 按照位置读取数据
salesDf.iloc[0,1]
'001616528'
- 读取第一行数据
salesDf.iloc[0,:]
购药时间 2018-01-01 星期五
社保卡号 001616528
商品编码 236701
商品名称 强力VC银翘片
销售数量 6
应收金额 82.8
实收金额 69
Name: 0, dtype: object
- 读取第一列数据
salesDf.iloc[:,0]
0 2018-01-01 星期五
1 2018-01-02 星期六
2 2018-01-06 星期三
Name: 购药时间, dtype: object
- 按照列名称读取数据
- 读取某一列或某几列数据
salesDf.loc[:,'商品名称']
0 强力VC银翘片
1 清热解毒口服液
2 感康
Name: 商品名称, dtype: object
salesDf.loc[:, ['商品名称', '销售数量']]
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 商品名称 | 销售数量 | |
|---|---|---|
| 0 | 强力VC银翘片 | 6 |
| 1 | 清热解毒口服液 | 1 |
| 2 | 感康 | 2 |
- 读取列数据的简单写法
salesDf['商品名称']
0 强力VC银翘片
1 清热解毒口服液
2 感康
Name: 商品名称, dtype: object
2.筛选查询
- 构建查询条件
querySet = salesDf.loc[:, '销售数量'] > 1
type(querySet)
pandas.core.series.Series
querySet
0 True
1 False
2 True
Name: 销售数量, dtype: bool
- 应用查询条件
salesDf.loc[querySet,:]
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 购药时间 | 社保卡号 | 商品编码 | 商品名称 | 销售数量 | 应收金额 | 实收金额 | |
|---|---|---|---|---|---|---|---|
| 0 | 2018-01-01 星期五 | 001616528 | 236701 | 强力VC银翘片 | 6 | 82.8 | 69.0 |
| 2 | 2018-01-06 星期三 | 0012602828 | 236701 | 感康 | 2 | 16.8 | 15.0 |
3.pandas读取execl
这里依赖于xlrd
fileNameStr = './手机销售情况.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1')
- 读取前5行
salesDf.head()
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 商品名称 | 单价 | 销量 | |
|---|---|---|---|
| 0 | IphoneXsMax | 9900 | 100000 |
| 1 | IphoneXR | 5000 | 500000 |
| 2 | 小米9 | 2999 | 2000000 |
| 3 | IpadMini5 | 2999 | 100000000 |
- 查看数据类型
salesDf.loc[:, '单价'].dtype
dtype('int64')
salesDf.dtypes
商品名称 object
单价 int64
销量 int64
dtype: object
- 查看数据行数列数
salesDf.shape
(4, 3)
- 每一列的描述统计信息
salesDf.describe()
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 单价 | 销量 | |
|---|---|---|
| count | 4.000000 | 4.000000e+00 |
| mean | 5224.500000 | 2.565000e+07 |
| std | 3256.603599 | 4.957341e+07 |
| min | 2999.000000 | 1.000000e+05 |
| 25% | 2999.000000 | 4.000000e+05 |
| 50% | 3999.500000 | 1.250000e+06 |
| 75% | 6225.000000 | 2.650000e+07 |
| max | 9900.000000 | 1.000000e+08 |
numpy和pandas简单使用的更多相关文章
- python之pandas简单介绍及使用(一)
python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...
- 1.理解Numpy、pandas
之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...
- python及numpy,pandas易混淆的点
https://blog.csdn.net/happyhorizion/article/details/77894035 初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可 ...
- NumPy和Pandas常用库
NumPy和Pandas常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数 ...
- numpy,scipy,pandas 和 matplotlib
numpy,scipy,pandas 和 matplotlib 本文会介绍numpy,scipy,pandas 和 matplotlib 的安装,环境为Windows10. 一般情况下,如果安装了Py ...
- python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- 如何快速地从mongo中提取数据到numpy以及pandas中去
mongo数据通常过于庞大,很难一下子放进内存里进行分析,如果直接在python里使用字典来存贮每一个文档,使用list来存储数据的话,将很快是内存沾满.型号拥有numpy和pandas import ...
- numpy、pandas
numpy: 仨属性:ndim-维度个数:shape-维度大小:dtype-数据类型. numpy和pandas各def的axis缺省为0,作用于列,除DataFrame的.sort_index()和 ...
- [转] python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
随机推荐
- delphi checklistbox用法
在Delphi中checklistbox中高亮选中(不论是否Checked)能够进行操作么?删除,上下移动等等 删除:CheckListBox.DeleteSelected; 上下移: CheckLi ...
- 本地安装apk后直接打开,按下Home键再重新打开,然后按下返回键时页面展示错误的处理方法
情景: 1.下载apk到手机本地,点击本地apk开始安装 2.安装完成后,一般会有 “完成” 和 “打开” 两个按钮,点击 “完成” 按钮时是没有问题的,不管它 3.点击 “打开” 按钮,进入到首页( ...
- 棋盘游戏 HDU - 1281 (删点 二分匹配)
小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决 ...
- MT【168】还是两根法
设二次函数$f(x)=ax^2+bx+c(a>0)$,方程$f(x)=x$的两根$x_1,x_2$满足$0<x_1<x_2<\dfrac{1}{a}$,(Ⅰ)当$x\in(0, ...
- 前端学习 -- Css -- 浮动
块元素在文档流中默认垂直排列,所以这个三个div自上至下依次排开,如果希望块元素在页面中水平排列,可以使块元素脱离文档流. 使用float来使元素浮动,从而脱离文档流 可选值: none,默认值,元素 ...
- POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for UNIX / UVAlive 5418 A Plug for UNIX / SCU 1671 A Plug for UNIX (网络流)
POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for ...
- bug找到吐的赶脚
bug找到吐的赶脚,真**刺激 一.单元测试 设计思路 首先是需要写一个无括号四则运算函数 下面的运算先是运算括号内的数 然后将null后置 全部代码测试,覆盖率92.4% 二.结构优化 uml图 流 ...
- 基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)
http://blog.csdn.net/jiuqiyuliang/article/details/19967031 目录: 基于asp.net + easyui框架,一步步学习easyui-data ...
- linux shell重定向
http://note.youdao.com/noteshare?id=e944e6315d1566b3417e6f59305ddedc
- MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)
MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...