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"}))
相关推荐
默_笙2 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003962 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技2 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Asa121382 天前
R语言实现多组学因子分析(MOFA)
数据分析
只睡四小时2 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
奇思妙想聪明勤奋的小羊2 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1232 天前
2026年第38周GitHub趋势周报
python·科技·github
漂着的圆木2 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量