Excel的主要作用是保存数据,进行数据分析

Pandas是线上服务类型,数据分析和数据处理(在机器学习中数据处理)

在统计学理论支撑下诞生的,帮助相关的业务部分部门需要监控、定位、分析、解决问题,帮助企业高效决策,提高经验的效率,从而提高利润,发挥价值,规避分析。

pandas

数据分析 三剑客

  • numpy数值计算
  • pandas数据分析
  • matplotlib+seaborn数据可视化

tableau + power bi + Excel

# pandas继承了numpy
# pandas中有两组数据类型,一个是Series,另一个是DataFrame
import pandas as pd
import numpy as np

1、Series

Series是一种类似与一维数组的对象,由下面两个部分组成:

values:一组数据(ndarray类型)
key:相关的数据索引标签

1)Series的创建

两种创建方式:

(1) 由列表或numpy数组创建

默认索引为0到N-1的整数型索引

s1 = pd.Series([1,2,3,4])
s1
#0 1
#1 2
#2 3
#3 4
#dtype: int64
通过设置index参数指定索引
s2 = pd.Series(data=[1,2,3,4],index=list('abcd'))
s2
#a 1
#b 2
#c 3
#d 4
#dtype: int64
name参数
s3 = pd.Series(data=[1,2,3,4],index=list('abcd'),name='demo')
s3
#a 1
#b 2
#c 3
#d 4
#Name: demo, dtype: int64
copy属性

对于ndarray来说,直接可以引用地址

arr = np.array([1,2,3,4,5])
ser = pd.Series(data=arr,copy=True)
ser
#0 1
#1 2
#2 3
#3 4
#4 5
#dtype: int32
arr[0]=100
ser
#0 1
#1 2
#2 3
#3 4
#4 5
#dtype: int32

(2) 由字典创建

#set类型不支持
dict_ = dict(a=1,b=2,c=3)
pd.Series(dict_)
#a 1
#b 2
#c 3
#dtype: int64
2)Series的索引和切片

可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的仍然是一个Series类型)。分为显示索引和隐式索引:

(0)常规索引的方式
S = pd.Series(dict(a=1,b=2,c=3,d=4))
S[:2],S[:'c'],S.c
#(a 1
# b 2
# dtype: int64, a 1
# b 2
# c 3
# dtype: int64, 3)

索引的类型有两种:

枚举型索引:特征索引是连续数值
关联型索引:特征索引都是离散字符类型

(1) 显式索引:
  • 使用index中的关联类型作为索引值
  • 使用.loc[](推荐)
    可以理解为pandas是ndarray的升级版,但是Series也可是dict的升级版

注意,此时是闭区间

S.loc['b']
#2
(2) 隐式索引:
  • 使用整数作为索引值
  • 使用.iloc[](推荐)
    注意,此时是半闭区间
S.iloc[2]
#3
常规切片
S
#a 1
#b 2
#c 3
#d 4
#dtype: int64
S[1:-1]
#b 2
#c 3
#dtype: int64
S['a':'d']
#a 1
#b 2
#c 3
#d 4
#dtype: int64
显式切片
S.loc['a':'d']
#a 1
#b 2
#c 3
#d 4
#dtype: int64
隐式切片
S.iloc[0:-1]
#a 1
#b 2
#c 3
#dtype: int64
3)Series的基本概念
可以把Series看成一个定长的有序字典
可以通过ndim,shape,size,index,values等得到series的属性
S.ndim,S.shape,S.size,S.dtype
#(1, (4,), 4, dtype('int64'))
S.index
#Index(['a', 'b', 'c', 'd'], dtype='object')
S.keys()
#Index(['a', 'b', 'c', 'd'], dtype='object')
S.values
#array([1, 2, 3, 4], dtype=int64)
S.nbytes
#32
可以通过head(),tail()快速查看Series对象的样式

共同都有一个参数n,默认值为5

S = pd.Series(data=np.random.randint(0,10,10000))
#Linux 当中 head -n xxx.txt 读取前几行
S.head(n=3)
#0 4
#1 9
#2 8
#dtype: int32
使用pandas读取CSV文件
#filepath_or_buffer = 路径
#sep=',' CSV的分割符
city = pd.read_csv('500_Cities__Local_Data_for_Better_Health.csv')
city.head()

当索引没有对应的值时,可能出现缺失数据显示NaN(not a number)的情况
np.array([None,1,2,3])
#array([None, 1, 2, 3], dtype=object)
S=pd.Series([None,1,2,3])
可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
#mysql where demo is not null
index = S.notnull()
index
#0 False
#1 True
#2 True
#3 True
#dtype: bool
S[index]
#1 1.0
#2 2.0
#3 3.0
#dtype: float64