python统计行号_利用Python进行数据分析(第三篇上)

上一篇文章我记录了自己在入门 Python 学习的一些基础内容以及实际操作代码时所碰到的一些问题。

这篇我将会记录我在学习和运用 Python 进行数据分析的过程:

  • 介绍 Numpy 和 Pandas 两个包
  • 运用 Numpy 和 Pandas 分析一维、二维数据
  • 数据分析的基本过程
  • 实战项目【用 Python 分析朝阳医院2018季度的药物销售数据】

一、简单介绍 Numpy 和 Pandas 两个包

NumPy 和 pandas 是 Python 常见的两个科学运算的包,提供了比 Python 列表更高级的数组对象且运算效率更高。常用于处理大量数据并从中提取、分析有用指标。

NumPy 是 Numerical Python 的简称, 它是目前 Python 数值计算中最为重要的基础包。大多数计算包都提供了基于 NumPy 的科学函数功能,将 NumPy 的数组对象作为数据交换的通用语。NumPy 的核心是 ndarray 对象,它封装了 Python 的原生数据类型的N维数组。NumPy 创建的数组在创建时就要有固定大小,数组元素需要有相同的数据类型,NumPy 也可以像Python 数组一样使用切片。矢量化和广播是 Numpy 的特性。

pandas 所包含的数据结构和数据梳理工具的设计使得在 Python 中 进行数据清晰和分析非常快捷。pandas 经常是和其它数值计算工具,比如 NumPy 和 SciPy,以及数据可视化工具比如 matplotlib 一起使用的。 pandas 支持大部分 NumPy 语言风格的数组计算。pandas 可以直观的描述一维和二维数据结构,分别是 Series 对象和 DataFrame 对象,理解起来很直观清晰。pandas 可以处理多种不同的数据类型,可以处理缺失数据,可以分组和聚合,也支持切片功能。

二、运用 NumPy 和 pandas 分析一维、二维数据

首先在 conda 中安装这两个包,安装命令:

conda install numpy, pandas

'''
Install two packages in conda, installation command:
conda install numpy, pandas
'''
# import numpy package
import numpy as np
# import pandas package
import pandas as pd
  1. 运用 NumPy 分析一维数据

1.1 定义一维数组:

定义一维数组 array,参数传入的是一个列表 [2,3,4,5]

'''
Definition: 
One dimension array, parameters passed was a list[2,3,4,5]
'''
a = np.array([2,3,4,5])

1.2 查询:

# check items
a[0]
2

1.3 切片访问 - 获取指定序号范围的元素

# section acess: Acquired items from designated range series number 
# a[1:3] Acquired items from series no. 1 to series no.3
a[1:3]
array([3, 4])

1.4 查询数据类型:

'''
dtype detail info link reference:
https://docs.scipy.org/doc/numpy-1.10.1/reference/arrays.dtypes.html
'''
# Check data types
a.dtype
dtype('int32')

1.5 统计计算 - 平均值

# Statistical caculation
# mean
a.mean()
3.5

1.6 统计计算 - 标准差

# standard deviation
a.std()
1.118033988749895

1.7 向量化运行 - 乘以标量

# vectorization: multiply scalar
b = np.array([1,2,3])
c = b * 4
c
array([ 4, 8, 12])

2. 运用 NumPy 分析二维数据

2.1 定义二维数组:

'''
Numpy Two-dimensional data structure:
Array
'''
# Define Two-dimensional data array
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]
])

2.2 获取元素:

获取行号是0,列号是2的元素

# Acquire the items that row number is 0, and Column number is 2
a[0,2]
3

2.3 获取行:

获取第1行

# Acquire first row items
a[0,:]
array([1, 2, 3, 4])

2.4 获取列:

获取第1列

# Acquire first column items 
a[:,0]
array([1, 5, 9])

2.5 NumPy数轴参数:axis

1) 如果没有指定数轴参数,会计算整个数组的平均值

'''
If the axis parameters is not designated, 
the mean of the entire array will be calculated 
'''
a.mean()
6.5

2) 按轴计算:axis=1 计算每一行

# caculate according to axis: axis = 1 , caculate evey single row
a.mean(axis = 1)
array([ 2.5, 6.5, 10.5])

3) 按轴计算:axis=0 计算每一列

a.mean(axis = 0)
array([5., 6., 7., 8.])

3. 运用 pandas 分析一维数据

3.1 定义 Pandas 一维数据结构:

定义 Pandas 一维数据结构 - Series

'''
Definition: 
Pandas One Dimension Data Analysis: Series 
''''''
One day stock price saved for 6 companies(USD),
Tenent 427 HKD equal to 54.74 USD.
'''
stockS = pd.Series([54.74, 190.9, 173.14, 1050.3, 181.86, 1139.49],index = ['tencent','alibaba','apple','google','facebook','amazon'])

3.2 查询

查询 stockS

stockS
tencent 54.74
alibaba 190.90
apple 173.14
google 1050.30
facebook 181.86
amazon 1139.49
dtype: float64

3.3 获取描述统计信息:

# Acquired describe statistical info
stockS.describe()
count 6.000000
mean 465.071667
std 491.183757
min 54.740000
25% 175.320000
50% 186.380000
75% 835.450000
max 1139.490000
dtype: float64

3.4 iloc属性用于根据索引获取值

stockS.iloc[0]
54.74

3.5 loc属性用于根据索引获取值

# loc attribution: used to acquire value according to the index
stockS.loc['tencent']
54.74

3.6 向量化运算 - 向量相加

# vectorization: vectors addition
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

3.7 删除缺失值

# Method 1: Delete missing value 
s3.dropna()
a 11.0
b 22.0
dtype: float64

3.8 填充缺失值

# Filled up the missing values
s3 = s2.add(s1, fill_value = 0)
s3
a 11.0
b 22.0
c 3.0
d 4.0
e 30.0
f 40.0
dtype: float64

4. 运用 pandas 分析二维数据

pandas 二维数组:数据框(DataFrame)

4.1 定义数据框

'''
Pandas Two-dimensional array: DataFrame
'''
# Step1: Define a dict, Mapping names and corresponding values 
salesDict = {'medecine purchased date':['01-01-2018 FRI','02-01-2018 SAT','06-01-2018 WED'],'social security card number':['001616528','001616528','0012602828'],'commodity code':[236701,236701,236701],'commodity name':['strong yinqiao VC tablets', 'hot detoxify clearing oral liquid','GanKang compound paracetamol and amantadine hydrochloride tablets'],'quantity sold':[6,1,2],'amount receivable':[82.8,28,16.8],'amount received':[69,24.64,15]
}# import OrdererDict
from collections import OrderedDict# Define an OrderedDict
salesOrderDict = OrderedDict(salesDict)# Define DataFrame: passing Dict, list name
salesDf = pd.DataFrame(salesOrderDict)

4.2 查看

salesDf

2a6aa8398afe16e4023a0cceaf250cc5.png

4.3 平均值

是按每列来求平均值

# mean: caculating according to columns
salesDf.mean()
commodity code 236701.000000
quantity sold 3.000000
amount receivable 42.533333
amount received 36.213333
dtype: float64

4.4 查询数据 - iloc属性用于根据位置获取值

1) 查询第1行第2列的元素

'''
iloc attributes used to acquired value according to position
'''
# check items at 1st row and 2nd column
salesDf.iloc[0,1] 
'001616528'

2) 获取第1行 - 代表所有列

# Acquired all items of first row - collect every single colum
salesDf.iloc[0,:]
medecine purchased date 01-01-2018 FRI
social security card number 001616528
commodity code 236701
commodity name strong yinqiao VC tablets
quantity sold 6
amount receivable 82.8
amount received 69
Name: 0, dtype: object

3) 获取第1列 - 代表所有行

# Acquired all items of first column - collect every single row 
salesDf.iloc[:,0]
0 01-01-2018 FRI
1 02-01-2018 SAT
2 06-01-2018 WED
Name: medecine purchased date, dtype: object

4.5 查询数据 - loc属性用于根据索引获取值

1) 获取第1行

'''
loc attributes used to acquired value according to index
'''
# Check items from first row first column
salesDf.loc[0,'medecine purchased date']
'01-01-2018 FRI'

2) 获取“商品编码”这一列

# Acquired all items of column 'commodity code'
# Method 1:
salesDf.loc[:,'commodity code']
0 236701
1 236701
2 236701
Name: commodity code, dtype: int64

3) 简单方法:获取“商品编码”这一列

# Acquired all items of column 'commodity code'
# Method 2: Easy way
salesDf['commodity code']
0 236701
1 236701
2 236701
Name: commodity code, dtype: int64

4.6 数据框复杂查询 - 切片功能

1) 通过列表来选择某几列的数据

# Select a few column data via list
salesDf[['commodity name','quantity sold']]

35fbd8f76ba58814b7dd6c336303a391.png

2)通过切片功能,获取指定范围的列

# Acquired data from define range of column via section 
salesDf.loc[:,'medecine purchased date':'quantity sold']

f7dec3cbbe275cdc68614bc33e538dad.png

4.7 数据框复杂查询 - 条件判断

1) 通过条件判断筛选 - 第1步:构建查询条件

# Select via condition test
# Step 1: Establish query condition
querySer = salesDf.loc[:,'quantity sold'] > 1
type(querySer)
pandas.core.series.Series
querySer
0 True
1 False
2 True
Name: quantity sold, dtype: bool
salesDf.loc[querySer,:]

aaf6e9f82f41c8121e138e4f4c07f633.png

4.8 查看数据集描述统计信息

1 ) 读取 Ecxcel 数据

# Read data from Excel
fileNameStr = 'C:UsersUSERDesktop#3Python3_The basic process of data analysisSales data of Chaoyang Hospital in 2018  - Copy.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1')

2) 打印出前3行,以确保数据运行正常

# Print first three row to make sure data can work properly 
salesDf.head(3)

35f3c12662c5e1c86975cdaf6a9d5bcf.png

3) 查询行、列总数

salesDf.shape
(6578, 7)

4)查看某一列的数据类型

# Check the data type of one column 
salesDf.loc[:,'quantity sold'].dtype
dtype('float64')

5)查看每一列的统计数值

# Check the statistics for each column
salesDf.describe()

7eb3e94bb0261231d8ef08417233c2cf.png

下一篇我将继续后半部分的学习

  • 数据分析的基本过程
  • 实战项目【用 Python 分析朝阳医院2018季度的药物销售数据】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lnmp架构搭建—源码编译(nginx、mysql、php)

含义及理解: LNMP LinuxNginxMysqlPHP:LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指P…

解析xml_Mybatis中mapper的xml解析详解

上一篇文章分析了mapper注解关键类MapperAnnotationBuilder,今天来看mapper的项目了解析关键类XMLMapperBuilder。基础介绍回顾下之前是在分析configuration的初始化过程,已经进行到了最后一步mapperElement(root.evalNode("mappers"))&#x…

lnmp—MemCache的作用

含义及理解: 1 . memcache是一个高性能的分布式的内存对象缓存系统,用于动态web应用以减轻数据库负担。通过在内存里维护一个统一的巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。 memcache是一…

openresty—实现缓存前移

含义及理解: OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。 其目标是让Web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O模型&am…

Nginx+Keepalived+Tomcat之动静分离的web集群

NginxKeepalivedTomcat之动静分离的web集群 博客分类: webserverNginxKeepalivedTomcat之动静分离的web集群为小公司提供大概一天持续在100万/日之间访问的高性能、高可用、高并发访问及动静分离的web集群方案NginxKeepalived 高可用、反向代理NginxPHP …

安装完成后的配置_cent os7 默认安装后的一般配置

在安装cent os7后,进入系统会出现一些命令无法执行。这是因为最小化没有安装包含的软件包。这时候先要配置一下基本的IP参数,(包括动态,静态,或者是双网卡绑定)。我们在虚拟机中模拟操作一下,配置文件在/etc/sysconfig…

lnmp构架——对tomcat详解

tomcat的安装部署 安装jdk和tomcat tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/做好软连接便于访问 cd /usr/local ln -s jdk1.7.0_79/ java ln -s apache-tomcat-7.0.37/ tomcat配置环境变量 vim /etc/profile…

zabbix监控部署 与添加主机

zabbix介绍: zabbix([zbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决…

打开是什么样子的图片_情侣头像 | 无论是什么样子的你 我都好喜欢

点击【情侣图片大全】- 右上角找到【…】立刻设我为星标/置顶 - 不迷路哦情侣图片大全“时光真疯狂,我一路执迷与匆忙”情侣/闺蜜/动漫/闺蜜网名长按图片保存 点击图片放大图片高清,建议在 W i f i 下浏览这个世界是多么神奇我竟然遇见了你无论是什么…

zabbix监控平台添加服务(http,nginx,mysql)

1 . 监控httpd服务: 首先确保已经搭建zabbix监控平台,并且将需要监控的主机已经添加。 对主机server2 上的http服务进行监控,首先确保server2主机安装了http服务。 使用http在zabbix中自带监控模版 点击配置->主机->server2->模…

zabbix使用JMX监控tomcat

JMX 全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。 从Zabbix2.0开始,内置了监控JMX的功能,叫做"Zabbix Java Gateway ",在Zabbix Serve上会启动名为"Zabbix Java Gateway "的进程&…

自定义控件添加属性_|AutoCAD LT 2019 Mac自定义功能区的方法

AutoCAD LT是一款非常好用的CAD三维设计绘图软件,最新版本2019拥有改进的桌面、新应用实现跨设备工作流,以及DWG比较等新功能,并且AutoCAD LT 2019 Mac可以根据你的需要和工作习惯来自定义功能区,下面为大家带来自定义功能区的详细…

Zabbix监控——proxy 分布式监控配置

proxy分布式监控 Zabbix proxy是在大规模分布式监控场景中,采用的一种用以分担server端压力的分层结构, proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,极大的减轻了server的负载压力,使…

AutoCAD_acadiso.dwt卡死

2019独角兽企业重金招聘Python工程师标准>>> 问题描述:每次执行到打开acadiso.dwt就卡死,且电脑显示有网,确打不开网页 可能原因:可能是因为AotuCAD是盗版的 解决办法: 1.在任务管理器中把WSCommCntr.exe进…

docker简介与搭建

1 . 对docker的理解: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间…

007_Web to lead

转载于:https://www.cnblogs.com/bandariFang/p/6229491.html

设置header_Nginx的这些安全设置,你都知道吗?

Nginx 是最流行的 Web 服务器,可以只占用 2.5 MB 的内存,却可以轻松处理 1w 的 http 请求。做为网站的入口,Nginx 的安全设置重要性不言而喻。下面带你一起去认识一下这些安全配置吧!nginx.conf是 Nginx 最主要的配置文件&#xf…

ISP运营商实验室测试机架拓扑搭建经验分享

大家好,有些日子没更新干货了,近期难得有假期进行修整,思前顾后还是坐下来聊聊自己长期负责维护和搭建的实验室环境。废话不多说,直接上图。因为图较大,分上下部分进行上传。网络主框架(上)服务…

关于二手交易用户指南怎么写_让用户拍案叫绝文案怎么写?试试这3个方法

“共鸣”到底是什么? 为什么有些文章会引起共鸣,而有些则没有。现在假设为产品家用手持式美容仪写一份副本。 由于主要重点是“家庭使用”,因此您立即想到了“家庭美容”的口号。 尽管这句话很简单易懂,但谈论起来总是很简单……似…

Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

Centos7NginxKeepalived实现Apache服务的高可用&负载均衡今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7NginxKeepalived实现WEB服务的高可用负载均衡服务,终于在2017年的第一天前完成了,所以在此分享…