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…

Java PipedInputStream available()方法与示例

PipedInputStream类的available()方法 (PipedInputStream Class available() method) available() method is available in java.io package. available()方法在java.io包中可用。 available() method is used to return the number of available bytes left that can be read …

解析xml_Mybatis中mapper的xml解析详解

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

lnmp—MemCache的作用

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

Java ListResourceBundle getKeys()方法与示例

ListResourceBundle类的getContents()方法 (ListResourceBundle Class getContents() method) getContents() method is available in java.util package. getContents()方法在java.util包中可用。 getContents() method is used to return an enumeration of all the keys tha…

orale用户密码过期处理

使用具有管理权限的用户登录1、查看用户的proifle是哪个,一般是default:SELECT username,PROFILE FROM dba_users;2、查看指定概要文件(如default)的密码有效期设置:sql>SELECT * FROM dba_profiles s WHERE s.prof…

python字典怎么设置_在python中设置字典中的属性

在python中设置字典中的属性是否可以在python中从字典创建一个对象,使每个键都是该对象的属性?像这样的东西:d { name: Oscar, lastName: Reyes, age:32 }e Employee(d)print e.name # Oscarprint e.age 10 # 42我认为这几乎与这个问题相反…

Java ObjectInputStream readByte()方法与示例

ObjectInputStream类readByte()方法 (ObjectInputStream Class readByte() method) readByte() method is available in java.io package. readByte()方法在java.io包中可用。 readByte() method is used to read a byte (i.e. 8 bit) of data from this ObjectInputStream. re…

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…

Java Integer类lowerOneBit()方法与示例

整数类lowerOneBit()方法 (Integer class lowestOneBit() method) lowestOneBit() method is available in java.lang package. minimumOneBit()方法在java.lang包中可用。 lowestOneBit() method is used to find at most only single 1’s bit from the rightmost side one b…

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…

Linux 查找文件

find 查找目录 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作&#xff…

Java GregorianCalendar hashCode()方法与示例

GregorianCalendar类的hashCode()方法 (GregorianCalendar Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to returns the hash code for this GregorianCalendar. hashCode…

python元组为什么不可变_为什么python字符串和元组是不可变的?

我不知道为什么字符串和元组是不可变的;使它们不可变的优点和缺点是什么?除了Python解释器的内部实现,这种设计在编写程序上是否有很好的意义?(例如,如果元组和字符串是可变的,会更容易吗?)如果…

InnoDB事务结构体代码变量列表

事务结构 struct trx_t 写在前面 InnoDB是MySQL的一个存储引擎,支持事务,支持非堵塞的一致性读,物理存储结构是Page,每个事务都有回滚日志,重做日志,事务还会有死锁检测,各种各样不同的锁等等等…

对cookie与session的理解

cookie: 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。 cookie的出现就是为了解决这个问题, 第一次登录后服务器返回一些数据(…

ubutun 更换网络源_Ubuntu 更换源

1.切换到root用户# su root备份源文件 目录:/etc/apt# cd /etc/apt/# cp sources.list sources.list.bk3.更换源 阿里源 清华源# >sources.list # 清空源# vim sources.list # 选择一个源,复制进去# apt update # 更新源,需要等几分钟# ex…

php : 常用函数

常用函数&#xff1a; <?php /*** 获取客户端IP* return [string] [description]*/ function getClientIp() {$ip NULL;if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$arr explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]);$pos array_search(unknown,$arr);if(false ! $po…