python的数据分析Pandas

Pandas是没有行的概念

Pandas的两个核心概念Series和DataFrame

Series一列数据,DataFrame多列数据

Series

创建Series对象

python 复制代码
import pandas
import numpy
#Series对象的创建
s1 = pandas.Series([1,2,3,4,5])
print(s1)
#创建一列数据改变索引
s2 = pandas.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print(s2)
#根据元组创建一列数据
s3 = pandas.Series((1,2,3,4,5),index=('a','b','c','d','e'))
print(s3)
#根据字典创建一列数据
s4 = pandas.Series({"a":1,"b":2,"c":3,"d":4,"e":5})
print(s4)

#通过numpy创建索引对象
s5 = pandas.Series(numpy.arange(5))
print(s5)

Series获取全部的值和根据索引获取值

输出结果

DataFrame

数据的产生

通过字典产生一列数据或者列表中套元组(列表中套列表产生一行数据)

DataFrame对象的属性

python 复制代码
import pandas
import numpy

score_df = pandas.DataFrame(numpy.random.randint(40,100,(10,5)))
score_df.columns=["语文","数学","政治","体育","历史"]
score_df.index=["同学"+str(i) for i in range(10)]

print(score_df.shape) #列表形状
print(score_df.columns) #列的索引
print(score_df.index) #行的索引
print(score_df.values) #数据内容
print(score_df.T)  #行列倒置

Pandas排序

复制代码
按照年龄升序工资降序排序
python 复制代码
import pandas
df = pandas.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '年龄': [25, 30, 35, 28, 32],
    '部门': ['技术部', '销售部', '技术部', '人事部', '销售部'],
    '工资': [5000, 7000, 6000, 5500, 7500]
})
print(df)
df_order = df.sort_values(by=['年龄','工资'],ascending=[True,False])  #按照年龄升序工资降序排序
print(df_order)

Pandas的固定筛选

Pandas的空处理(NaN)

复制代码
dropna()删除一行中带有NaN的默认删行
python 复制代码
import pandas
df = pandas.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '年龄': [25, None, 35, 28,None],
    '部门': ['技术部', '销售部', '技术部', '人事部', None],
    '工资': [5000, 7000, 6000, 5500, 7500]
})
print(df)
# print(df.isnull())
# print(df.notnull())
print("*"*100)
# print(df.info())

df_nan = df.dropna()
print(df_nan)

删行删列

默认的删行

缺失值的填充

python 复制代码
import pandas
import numpy
df = pandas.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '年龄': [25, None, 35, 28,None],
    '部门': ['技术部', '销售部', '技术部', '人事部', None],
    '工资': [5000, 7000, 6000, 5500, 7500]
})
print(df)
# print(df.isnull())
# print(df.notnull())
print("*"*100)
# print(df.info())

# df_nan = df.dropna()
# print(df_nan)
#
# print("*"*100)
# df_row = df.dropna(axis=0) #删行,默认的就是删行
# print(df_row)
# print("*"*100)
# df_colum = df.dropna(axis=1) #删列
# print(df_colum)

#判断某列某行的某一个值是否有缺失值
print(pandas.isnull(df))

print(numpy.all(pandas.notnull(df) == True)) #判断所有的是否有缺失值
print("*"*100)
print(df.fillna("哈哈")) # 填充缺失值


#按照一列进行填充
print("*"*100)
df['年龄'] = df['年龄'].fillna(100)
print(df)

print("*"*100)
df.index=["行"+str(i) for i in range(df.shape[0])]
print(df)
##对某一行的空值进行填充
print("*"*100)
df.loc["行4"] = df.loc["行4"].fillna("哈哈")
print(df)

Pandas分组处理

python 复制代码
import pandas as pd
df = pd.read_csv("data/分组聚合数据.csv", sep=",")

print(df)
print("*"*100)
print(df.groupby(["产品"]).get_group(('A',)))

分组后进行数据统计,计算每个产品的下手额的总和

python 复制代码
import pandas as pd
df = pd.read_csv("data/分组聚合数据.csv", sep=",")

print(df)
print("*"*100)
print(df.groupby(["产品"]).get_group(('A',)))
print("*"*100)
print(df.groupby(["产品"]).agg({"销售额":"sum"}))
相关推荐
Python私教8 分钟前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
Python私教31 分钟前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
卷无止境1 小时前
FastAPI 的Admin面板生态
后端·python
ctlover1 小时前
Streamlit 框架
python
ι:2 小时前
MATLAB 与 Python 搭建无人机地面站:优势、劣势与选型逻辑
python·matlab·无人机
船厂电气自动化ai大模型2 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
jufeng13072 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 7 篇】
python·ai agent·权限系统
梦想很大很大2 小时前
如果有一个本地优先的 Workflow 工具,你们团队会愿意用吗?
python·agent·workflow
用户8356290780513 小时前
Python 自动化 Word 文本框处理:创建、定位、填充内容与管理
后端·python
数据知道4 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php