Python数据分析(Series+DataFrame+部分运算+groupby)

Pandas操作财报数据

Series

type() 返回变量类型
可见ser_obj类型为<class 'pandas.core.series.Series'>

python 复制代码
import pandas as pd

ser_obj = pd.Series([9,2,'a',4,5],index=['11','22','33','44','aa'])
data={'Tome':'aa','Marry':'bb'}
print(type(ser_obj))
print(ser_obj)

ser_obj2=pd.Series(data)
print(ser_obj2)
print(ser_obj.index,ser_obj.values)

DataFrame


df类型为<class 'pandas.core.frame.DataFrame'>

python 复制代码
data=[[1,2,3],['a','b','c'],['!','@','$']]
df1=pd.DataFrame(data,columns=['A','B','C'],index=['1','2','3'])#添加列索引,行索引

print(type(df1))
print(df1)

读文件内容

python 复制代码
CSoft = pd.read_excel('E:\AAA工作\授课\大数据技术应用基础\代码文件和素材文件\ch6\data.xlsx',sheet_name='CSoft',usecols='A,B',nrows=2)# 只导入AB列,前两行
print(CSoft)


CSoft.to_excel('data1.xlsx')

import numpy as np 
df2=pd.DataFrame(np.random.rand(8,4),columns=['A','B','C','D'])
df2

读取

ser0 位置索引

ser'name'标签索引

ser0:4 【0,4)位置切片

ser'a':'d' 【'a','d'】标签切片

ser\['a','d','f'] 用列表盛放多个

df列索引行索引

df.loc(x,y) 标签 【x,y】 闭区间

df.iloc(x,y) 位置 【x,y)左闭右开区间

python 复制代码
print(df2.loc[1:2,'A'])
print(type(df2.loc[1:2,'A']))

排序

python 复制代码
df2.sort_index(axis=1,ascending=False) # axis=1列标签 axis=0行标签

df2.sort_values(by='A',ascending=False,axis=0) # axis=1列标签 axis=0行标签

计算

python 复制代码
df2['A'].quantile(q=0.5)#偶数就按中间两个数的均值

df3=pd.read_excel('E:\AAA工作\授课\大数据技术应用基础\代码文件和素材文件\ch7\MG公司2023年销售数据.xlsx')
df3
python 复制代码
df3['利润']=df3['销售金额']-df3['成本']

df3['销售金额'].describe()

df3['产品名称'].count()

groupby

python 复制代码
a1=df3['销售金额'].groupby(df3['地域'])
a2=df3.groupby('地域')
print(type(a1))# groupby.generic.SeriesGroupBy
print(type(a2))# groupby.generic.DataFrameGroupBy
print(a1)# 是多个元组所以得用循环查看。每个元组第一个元素是分组的字段值第二个元素是数据表
for i in a1:# 每个元组查看
    print(type(i[0]),type(i[1]))# str,pandas.core.series.Series也就是Series对象
    print(i[0])
    print(i[1])
    break
python 复制代码
a2=df3.groupby('地域')
print(type(a2))# groupby.generic.DataFrameGroupBy
for i in a2:# 每个元组查看
    print(type(i[0]),type(i[1]))# str,pandas.core.frame.DataFrame也就是DataFrame对象
    print(i[0])
    print(i[1])
    break

对分组后的组对象可以对其值求和,这里就是按地域分组后的销售金额求和

python 复制代码
print(type(df3['销售金额'].groupby(df3['地域']).sum()))
print(df3['销售金额'].groupby(df3['地域']).sum())# 求和使得数据类型变为pandas.core.series.Series

以上代码由于df3.groupby('地域')得到的组对象中还是个矩阵DataFrame,所以.sum()就将所有列分别求和了

python 复制代码
print(type(df3.groupby('地域').sum()))# frame.DataFrame
print(type(df3.groupby('地域')['销售金额'].sum()))# series.Series
print(df3.groupby('地域').sum())#

一般还是先分组再取列更常用

python 复制代码
a2=df3.groupby(['地域','日期'])
a2.sum()
相关推荐
OPEN-F9 分钟前
ROS2系列教程:tf2坐标变换详解(C++/Python)
开发语言·c++·python
2601_9620973614 分钟前
Python工作流实战:SpiffWorkflow深度应用与BPMN自动化指南
python·自动化·工作流·bpmn·spiffworkflow
XR12345678819 分钟前
医院基础网络改造升级选型深度解析
开发语言·网络·php
reasonsummer20 分钟前
【办公类-146-05】20260901《一分园、二分园四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
开发语言·数据库·c#
baopixiaoz37 分钟前
BeeQuant × BeeAgent:AI驱动智能交易
大数据·人工智能·python·区块链
wang_yb40 分钟前
Beta 分布:如何用“成功”和“失败”来预测下次尝试
数据分析·databook
名字还没想好☜41 分钟前
Go 标准库 flag 包实战:参数解析、子命令、自定义 Value 类型与默认值
开发语言·后端·golang·go
公爵爱学习1 小时前
无人机定点飞行-介绍
开发语言·图像处理·python·学习·线性回归·无人机
stillstream_ink1 小时前
OpenCart UI 自动化测试实战:POM 四层架构 + 失败自动截图 + 飞书通知
python·测试
databook1 小时前
Beta 分布:如何用“成功”和“失败”来预测下次尝试
python·数据挖掘·数据分析