python高级数据分析_Python数据分析-pandas高级操作
创建一个df,两列分别是姓名和薪资,然后给其名字起对应的英文名
dic ={'name':['jay','tom','jay'],'salary':[1000,2000,1000]
}
df= DataFrame(data=dic)
df
#给jay和tom起两个中文名字
dic = {#映射关系表:表明了映射关系
'jay':'张三',
'tom':'李四'
}
df['c_name'] = df['name'].map(dic)
df
运算工具
超过300部分的钱缴纳50%的税,计算每个人的税后薪资
map是Series的方法,只能被Series调用
def after_sal(s):return s - (s-300)*0.5df['after_sal'] = df['salary'].map(after_sal)
df
Series的方法apply也可以像map一样充当运算工具
apply充当运算工具效率要远远高于map
def after_sal(s):
return s - (s-300)*0.5
df['after_sal'] = df['salary'].apply(after_sal)
df
排序实现的随机抽样
take()
np.random.permutation()
df = DataFrame(data=np.random.randint(0,100,size=(100,3)),columns=['A','B','C'])
np.random.permutation(3) #返回0-2之间的乱序序列
array([2, 0, 1])
#1.对原始数据进行打乱
#打乱:是对索引打乱
#task的axis和drop系列的函数
df.take(indices=np.random.permutation(3),axis=1)
#对行列索引进行打乱且进行随机抽样
df.take(indices=np.random.permutation(3),axis=1).take(indices=np.random.permutation(100),axis=0)[0:20]
数据的分类处理
数据分类处理的核心:
groupby()函数
groups属性查看分组情况
df = DataFrame({'item':['Apple','Banana','Orange','Banana','Orange','Apple'],'price':[4,3,3,2.5,4,2],'color':['red','yellow','yellow','green','green','green'],'weight':[12,20,50,30,20,44]})
df
#提供一个分组条件,想要对水果的种类分组
df.groupby(by='item')
#查看分组结果
df.groupby(by='item').groups
{'Apple': Int64Index([0, 5], dtype='int64'),
'Banana': Int64Index([1, 3], dtype='int64'),
'Orange': Int64Index([2, 4], dtype='int64')}
#分组聚合:计算每一种水果的平均价格
df.groupby(by='item').mean()['price']#不推荐
item
Apple 3.00
Banana 2.75
Orange 3.50
Name: price, dtype: float64
#推荐
df.groupby(by='item')['price'].mean()
item
Apple 3.00
Banana 2.75
Orange 3.50
Name: price, dtype: float64
#将每一种水果的平均价格计算出来然后汇总到源数据中
mean_price_s = df.groupby(by='item')['price'].mean()
mean_price_s
item
Apple 3.00
Banana 2.75
Orange 3.50
Name: price, dtype: float6
dic = mean_price_s.to_dict()
dic
#求出每一种颜色水果的平均重量,将其汇总到源数据中
mean_weight_s = df.groupby(by='color')['weight'].mean()
mean_weight_s
color
green 31.333333
red 12.000000
yellow 35.000000
Name: weight, dtype: float64
df['color_mean_weight'] = df['color'].map(mean_weight_s.to_dict())
df
高级数据聚合
使用groupby分组后,也可以使用transform和apply提供自定义函数实现更多的运算
df.groupby('item')['price'].sum() <==> df.groupby('item')['price'].apply(sum)
transform和apply都会进行运算,在transform或者apply中传入函数即可
transform和apply也可以传入一个lambda表达式
def my_mean(s):
sum= 0
for i ins:
sum+=ireturn sum / len(s)
df.groupby(by='item')['price'].transform(my_mean)
0 3.00
1 2.75
2 3.50
3 2.75
4 3.50
5 3.00
Name: price, dtype: float64
df.groupby(by='item')['price'].apply(my_mean)
item
Apple 3.00
Banana 2.75
Orange 3.50
Name: price, dtype: float64
apply和transform的区别:
transform返回的结果是经过映射后的结果
apply返回的是没有经过映射的结果
数据加载
读取type-.txt文件数据
df = pd.read_csv('./data/type-.txt') #文本第一行成为了列索引 这不是我们想要的
df
df = pd.read_csv('./data/type-.txt',header=None)
df
df = pd.read_csv('./data/type-.txt',header=None,sep='-')
df
df.shape
(2, 1)
读取数据库中的数据
#连接数据库,获取连接对象
import sqlite3assqlite3
conn= sqlite3.connect('./data/weather_2012.sqlite')
#读取库表中的数据值
sql_df=pd.read_sql('select * from weather_2012',conn)
sql_df
#将一个df中的数据值写入存储到db
df.to_sql('dddfff',conn)
pd.read_sql('select * from dddfff',conn)
透视表
透视表是一种可以对数据动态排布并且分类汇总的表格格式。或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table。
透视表的优点:
灵活性高,可以随意定制你的分析计算要求
脉络清晰易于理解数据
操作性强,报表神器
df = pd.read_csv('./data/透视表-篮球赛.csv')
df
pivot_table有四个最重要的参数index、values、columns、aggfunc
index参数:分类汇总的分类条件
每个pivot_table必须拥有一个index。如果想查看哈登对阵每个队伍的得分则需要对每一个队进行分类并计算其各类得分的平均值:
想看看哈登对阵同一对手在不同主客场下的数据,分类条件为对手和主客场
df.pivot_table(index=['对手','主客场'])
values参数:需要对计算的数据进行筛选
如果我们只需要哈登在主客场和不同胜负情况下的得分、篮板与助攻三项数据:
df.pivot_table(index=['主客场','胜负'],values=['得分','篮板','助攻'])
Aggfunc参数:设置我们对数据聚合时进行的函数操作
当我们未设置aggfunc时,它默认aggfunc='mean'计算均值。
还想获得james harden在主客场和不同胜负情况下的总得分、总篮板、总助攻时:
df.pivot_table(index=['主客场','胜负'],values=['得分','篮板','助攻'],aggfunc='sum')
Columns:可以设置列层次字段
对values字段进行分类
#获取所有队主客场的总得分
df.pivot_table(index='主客场',values='得分',aggfunc='sum')
#查看主客场下的总得分的组成元素是谁
df.pivot_table(index='主客场',values='得分',aggfunc='sum',columns='对手',fill_value=0)
交叉表
是一种用于计算分组的特殊透视图,对数据进行汇总
pd.crosstab(index,colums)
index:分组数据,交叉表的行索引
columns:交叉表的列索引
import pandas aspdfrompandas import DataFrame
df= DataFrame({'sex':['man','man','women','women','man','women','man','women','women'],'age':[15,23,25,17,35,57,24,31,22],'smoke':[True,False,False,True,True,False,False,True,False],'height':[168,179,181,166,173,178,188,190,160]})
df
# 求出各个性别抽烟的人数
pd.crosstab(index=df.smoke,columns=df.sex)
#求出各个年龄段抽烟人情况
pd.crosstab(df.age,df.smoke)
python高级数据分析_Python数据分析-pandas高级操作相关推荐
- python纵向数据分析_python数据分析三个重要方法之:numpy和pandas
关于数据分析的组件之一:numpy ndarray的属性 4个必记参数: ndim:维度 shape:形状(各维度的长度) size:总长度 dtype:元素类型 一:np.array()产生n维数组 ...
- python什么是数据分析_python数据分析是什么
Q1:Python在数据分析方面有什么独特优势 python最大的优势在于学习门槛低,语法灵活. python也有很多开源成熟的科学计算机库,比如:Numpy,Scipy,Pandas 而且上面说的这 ...
- python数据分析软件_Python数据分析工具
Numpy Python没有提供数组功能,虽然列表可以完成基本的数组功能,但他不是真正的数组.Numpy内置函数处理速度是c语言级别,因此尽量使用内置函数,避免出现效率瓶颈的现象. Numpy的安装: ...
- python 统计分析 包_Python 数据分析包:pandas 基础
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...
- python数据分析图_Python数据分析:手把手教你用Pandas生成可视化图表的教程
大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...
- python炒股模块_Python数据分析-numpy模块、pandas模块.基本操作、股票案例
索引操作和列表同理 arr = np.random.randint(0,100,size=(5,6)) arr array([[14, 89, 71, 96, 1, 94], [30, 98, 10, ...
- python组成结构_Python数据分析丨pandas基本数据结构组成
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:统计学家 目录 1引言 2 Series数组 2.1 ...
- python 数组 运算_python数据分析(二) python numpy--数组和矢量运算--数组对象
Numpy numpy是数值计算最重要的基础包,几乎所有的科学运算的模块底层所用的都是numpy数组. Numpy本身没有提供多么高级的数据分析功能,他所提供的功能主要是: 1.具有矢量算术运算(用数 ...
- python数据统计_Python数据分析--Iris数据集实战
Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视 ...
最新文章
- 开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试
- java+arrayblockquene_java集合(五)Queue集合之ArrayBlockingQueue 详解
- 数据分析结果解读_聚类分析的实际运用及案例解读(二)
- python中的numpy函数算相关系数_NumPy ufunc通用函数
- Chorme Error 312 (net::ERR_UNSAFE_PORT) | Chorme 不信任端口
- Python快速构建神经网络
- 「裸奔」的数据隐私!
- linux 有道 离线词典,有道词典离线版
- impalahive大数据平台数据血缘与数据地图(四)-impala血缘架构图及功能介绍
- Vue中的SEO优化
- 小卡机器人积木教程_这个会动的智能积木机器人分分钟让孩子爱不释手!秒杀家中99%的益智玩具!| 团...
- 房地产支撑不起大国崛起
- java课程设计中国象棋对弈xitong_java课程设计中国象棋对弈系统txt
- python模拟按键包_今天玩点啥:利用python之PyUserInput实现模拟鼠标键盘操作,抢红包?聊天?自动下载?...
- 基于单片机的加油机系统
- zabbix 官网提供的监控 postgresql 的模板
- ” Microsoft.Office.Interop.Excel”无法引用
- poj 2152 Fire - 经典树形dp
- vs2017配置opencv4.2及QTcreator配置opencv4.2在界面显示图像
- k8s-搭建虚拟机centos7环境,虚拟机固定IP地址