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简单使用的更多相关文章

  1. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  2. 1.理解Numpy、pandas

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

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

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

  4. NumPy和Pandas常用库

    NumPy和Pandas常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数 ...

  5. numpy,scipy,pandas 和 matplotlib

    numpy,scipy,pandas 和 matplotlib 本文会介绍numpy,scipy,pandas 和 matplotlib 的安装,环境为Windows10. 一般情况下,如果安装了Py ...

  6. python安装numpy和pandas

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

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

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

  8. numpy、pandas

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

  9. [转] python安装numpy和pandas

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

随机推荐

  1. meta-inf文件夹以及MANIFEST.MF文件的作用

    meta-inf相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序.扩展程序.类加载器和服务 manifest.mf文件,在用jar打包时自动生成的. META-I ...

  2. NABCD模型

    下面是我对我们团队实现的程序的最终期待. 1.N(Need) 这里做了用户需求,所面向的用户虽然是所有英语学习群体,但是主要用户还是那群英文小说阅读者,即希望通过英文小说的阅读来提升单词量的人群. 1 ...

  3. 原理分析dubbo分布式应用中使用zipkin做链路追踪

    zipkin是什么 Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开 ...

  4. kubernetes部署

    [自动安装] 一:操作环境 操作系统    centos7 防火墙selinux #systemctl stop firewalld && systemctl disable fire ...

  5. Queries about less or equal elements CodeForces - 600B(二分)

    You are given two arrays of integers a and b. For each element of the second arraybj you should find ...

  6. UVA - 10129 Play on Words (欧拉回路+并查集)

    思路: 分别存下每个字符串的首尾字符,以字符为结点,单词看作一条变,就变成了求欧拉回路了,先判断下图是否连通,然后根据欧拉回路的结论:最多只能有两个点的入读不等于初读,而且必须是一个点的出度恰好比入度 ...

  7. 使用System.getProperty方法,如何配置JVM系统属性

    原创文章,欢迎转载,转载请注明出处! 很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty("")方法.这个方法需要配置JVM系统属性,那么如何配置 ...

  8. 「NOI2018」你的名字

    「NOI2018」你的名字 题目描述 小A 被选为了\(ION2018\) 的出题人,他精心准备了一道质量十分高的题目,且已经 把除了题目命名以外的工作都做好了. 由于\(ION\) 已经举办了很多届 ...

  9. 【题解】 [HEOI2016]排序题解 (二分答案,线段树)

    题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行 ...

  10. 【BZOJ1071】[SCOI2007]组队(神仙题)

    [BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...