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.pswp.cn/news/542044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542044.shtml
英文地址,請注明出處:http://en.pswp.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…