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"}))
相关推荐
2501_947575804 小时前
计算机毕业设计之jsp开山车行二手车交易系统
java·开发语言·hadoop·python·信息可视化·django·课程设计
Byron__5 小时前
AI学习_06_短期记忆与长期记忆
人工智能·python·学习
取经蜗牛6 小时前
Python 第一阶段完全指南:从零到第一个实用工具
开发语言·python
创世宇图6 小时前
【Python工程化实战】OpenTelemetry 在 Python 中的全链路追踪落地:从埋点到可视化的完整实战指南
python·分布式链路追踪·性能监控·opentelemetry·微服务可观测性
许彰午7 小时前
72_Python爬虫基础BeautifulSoup
爬虫·python·beautifulsoup
zhanghongyi_cpp7 小时前
10. 实验书3.4.2 筛选达到预警阈值的病虫害数据
python
tuddy7894648 小时前
Codex++ 安全边界探秘:从模型能力到风险防御
人工智能·python·安全
C++、Java和Python的菜鸟8 小时前
第1章 集合高级
java·jvm·python
第六五8 小时前
Python 内置装饰器
开发语言·python
梦帮科技8 小时前
UE5 GAS 实战:用 Gameplay Ability System 搭建「赛博修真」境界与技能体系
c++·人工智能·python·ue5·c#