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"}))
相关推荐
Mr数据杨6 小时前
自行车需求预测实战解析 从 Kaggle 回归赛题理解时序建模
人工智能·数据分析·kaggle竞赛
Jialu.7 小时前
中文 NLP 模型部署实战:FastAPI 接口 + Streamlit 看板
人工智能·python·自然语言处理·fastapi
Asum1ta8 小时前
K8s 学习环境搭建:Python 与 PyCharm 开发环境配置指南
python·学习·kubernetes
知识汲取者8 小时前
FastAPI 学习教程(写给想学 FastAPI 的 Java 工程师的)
python·学习·fastapi
飞Link8 小时前
动作方法中的分割与过度分割方法全解析(含代码实战与踩坑案例)
人工智能·python·算法·计算机视觉
小鹿的周先生8 小时前
第四章-SpringAI-函数调用&ToolCalling
开发语言·人工智能·python
Mr数据杨8 小时前
用会计信息做GDP增速预测的时序回归实战解析
人工智能·数据分析·kaggle竞赛
Mr数据杨8 小时前
企业年报文本变化预测实战 从文本回归到信息披露分析
人工智能·数据分析·kaggle竞赛
Mr数据杨9 小时前
钻石价格预测实战 从 Kaggle 回归赛题看结构化数据建模落地
人工智能·数据分析·kaggle竞赛
方知我9 小时前
NumPy一小时速成
开发语言·python·numpy