Python数据分析快速入门--NumPy & Pandas_numpy和pandas快速

[0 1 2 3 4 5 6 7 8 9]
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[ 5 6 7 8 9 10 11]
[ 5. 7. 9. 11.]
[ 0 1 2 …, 9997 9998 9999]

其他创建数组方法:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None):返回在间隔[start,stop]上计算的num个均匀间隔的样本

其他创建数组方法:zeros(shape, dtype=float, order=‘C’):返回给定形状和类型的新数组,用零填充

其他创建数组方法:zeros_like() 返回具有与给定数组相同的形状和类型的零数组

其他创建数组方法:ones()/ones_like(),和zeros()/zeros_like()一样,只是填充为1

其他创建数组方法:eye(),创建一个正方的N*N的单位矩阵,对角线值为1,其余为0

4⃣️numpy通用函数

数组形状:.T方法:转置,例如原shape为(3,4)/(2,3,4),转置结果为(4,3)/(4,3,2) → 所以一维数组转置后结果不变

数组形状:.reshape(a, newshape, order=‘C’):为数组提供新形状,而不更改其数据,所以元素数量需要一致

数组形状:.resize(a, new_shape):返回具有指定形状的新数组,如有必要可重复填充所需数量的元素

数组复制:.copy() 如ar1 = ar.copy()

数组类型转换:.astype(),如ar2 = ar1.astype(np.int32)

5⃣️Numpy随机数

numpy.random包含多种概率分布的随机样本,是数据分析辅助的重点工具之一,感兴趣的可以百度或私信~

二、数据分析工具:pandas学习

img

pandas包学习内容框架

首先在notebook中导入pandas包

#导入pandas包并重新命名(需要先安装,可以直接在终端安装:pip install pandas)
import pandas as pd

先来学习一下pandas的基础数据结构,pandas有Series和Dataframe两种数据结构,分别代表了一维数组和二维数组:

  • Series 数据结构是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引;
  • Dataframe是一个表格型的数据结构,“带有标签的二维数组”

1⃣️pandas一维数组Series创建及操作

**1、创建series:**创建方法一:由字典创建 / 创建方法二:由数组创建(一维数组) / 名称属性:name

创建方法一:由字典创建,字典的key就是index,values就是values

dic = {‘a’:1 ,‘b’:2 , ‘c’:3, ‘4’:4, ‘5’:5}
s1 = pd.Series(dic)
print(s1)
4 4
5 5
a 1
b 2
c 3
dtype: int64

创建方法二:由数组创建(一维数组)

s2=pd.Series([54.74,190.9,173.14,1050.3,181.86,1139.49],
index=[‘腾讯’,‘阿里巴巴’,‘苹果’,‘谷歌’,‘Facebook’,‘亚马逊’],
name=‘6家公司某一天的股价(美元)’)
print(s2,s2.name)

名称属性name,创建一个数组的名称

注:如果不标注index,默认index是从0开始,步长为1的数字

腾讯 54.74
阿里巴巴 190.90
苹果 173.14
谷歌 1050.30
Facebook 181.86
亚马逊 1139.49
Name: 6家公司某一天的股价(美元), dtype: float64 6家公司某一天的股价(美元)

**2、Series索引:**iloc属性用于根据位置获取值/ loc属性用于根据索引获取值/ 切片索引 / 布尔型索引

位置下标索引,位置下标从0开始

print(s2[0])

同iloc属性,用于根据位置索引

print(s2.iloc[0])
54.74
54.74

标签索引

print(s2[‘腾讯’])
#loc属性用于根据索引获取值
print(s2.loc[‘腾讯’])
54.74
54.74

切片索引

print(s2[‘腾讯’:‘苹果’])
腾讯 54.74
阿里巴巴 190.90
苹果 173.14
Name: 6家公司某一天的股价(美元), dtype: float64

布尔型索引

print(s2[s2>200])
谷歌 1050.30
亚马逊 1139.49
Name: 6家公司某一天的股价(美元), dtype: float64

**3、基本数据技巧:**数据查看 / 获取描述统计信息 / 向量化运算 / 删除缺失值 / 将缺失值进行填充

数据查看

print(s2.head(2),‘\n-------’) # .head()查看头部数据,默认查看5条
print(s2.tail(2)) # .tail()查看尾部数据,默认查看5条
腾讯 54.74
阿里巴巴 190.90
Name: 6家公司某一天的股价(美元), dtype: float64

Facebook 181.86
亚马逊 1139.49
Name: 6家公司某一天的股价(美元), dtype: float64

#获取描述统计信息
s2.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
Name: 6家公司某一天的股价(美元), dtype: float64

#向量化运算:向量相加
s3=pd.Series([1,2,3,4],index=[‘a’,‘b’,‘c’,‘d’])
s4=pd.Series([10,20,30,40],index=[‘a’,‘b’,‘e’,‘f’])
s5=s3+s4
print(s5)
a 11.0
b 22.0
c NaN
d NaN
e NaN
f NaN
dtype: float64

#删除值
print(s5.dropna()) # 方法1:删除缺失值
print(s3.drop([‘b’,‘c’])) # 方法2:删除指定值
a 11.0
b 22.0
dtype: float64
a 1
d 4
dtype: int64

#将缺失值进行填充
s5=s3.add(s4,fill_value=0)
print(s5)
a 11.0
b 22.0
c 3.0
d 4.0
e 30.0
f 40.0
dtype: float64

4、series与array一维数组的联系与区别:

pandas是建立在numpy的基础上的,series和ndarray较相似,索引切片功能差别不大。但是Series比Array的功能更多,series相比于ndarray,是一个自带索引index的数组,所以当只看series的值的时候,就是一个ndarray

2⃣️pandas二维数组Dataframe创建及操作

img

Dataframe学习内容框架

1、创建方法

  • 常用方法:由字典创建(由数组/list组成的字典)
  • 其他变形创建方法:由series组成的字典/由字典组成的列表/由字典组成的字典/通过二维数组直接创建

#常用创建方法:由字典创建(由数组/list组成的字典)
#第1步:定义一个字典,映射列名与对应列的值
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]
}

#导入有序字典
from collections import OrderedDict
#定义一个有序字典
salesOrderDict=OrderedDict(salesDict)

#定义数据框:传入字典,列名
salesDf=pd.DataFrame(salesOrderDict)
salesDf

img

salesDf结果

2、Dataframe索引

查询数据:iloc属性用于根据位置获取值:查询元素 / 获取行 / 获取列

#查询元素:查询第1行第2列的元素
salesDf.iloc[0,1]
‘强力VC银翘片’

#获取行:获取第1行,:代表所有列
salesDf.iloc[0,:]
社保卡号 001616528
商品名称 强力VC银翘片
购药时间 2018-01-01 星期五
实收金额 69
销售数量 6
应收金额 82.8
商品编码 236701
Name: 0, dtype: object

#获取列:获取第1列,:代表所有行
salesDf.iloc[:,0]
0 001616528
1 001616528
2 0012602828
Name: 社保卡号, dtype: object

查询数据:loc属性用于根据索引获取值:查询元素 / 获取行 / 获取列

#查询元素:查询第1行第2列的元素
salesDf.loc[0,‘商品名称’]
‘强力VC银翘片’

#获取行:获取第1行
salesDf.loc[0,:]
社保卡号 001616528
商品名称 强力VC银翘片
购药时间 2018-01-01 星期五
实收金额 69
销售数量 6
应收金额 82.8
商品编码 236701
Name: 0, dtype: object

#获取列:获取“商品名称”这一列
print(salesDf.loc[:,‘商品名称’])
#简单方法:获取“商品名称”这一列
print(salesDf[‘商品名称’])
0 强力VC银翘片
1 清热解毒口服液
2 感康
Name: 商品名称, dtype: object
0 强力VC银翘片
1 清热解毒口服液
2 感康
Name: 商品名称, dtype: object

数据框复杂查询:切片索引

#通过列表来选择某几列的数据
salesDf[[‘商品名称’,‘销售数量’]]

img

salesDf[['商品名称','销售数量']] 结果

#通过切片功能,获取指定范围的列
salesDf.loc[:,‘购药时间’:‘销售数量’]

img

salesDf.loc[:,'购药时间':'销售数量']结果

数据框复杂查询:条件判断(布尔型索引)

#通过条件判断筛选
querySer=salesDf.loc[:,‘销售数量’]>1 #第1步:构建查询条件
salesDf.loc[querySer,:]

img

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

706997110)]

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-XAkAI0hr-1712706997110)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值