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"}))
相关推荐
梦想不只是梦与想7 分钟前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合9 分钟前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
sibylyue10 分钟前
BI(商业智能)
数据分析
别问!问就是全会2 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI2 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python
benchmark_cc2 小时前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash
zh路西法3 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
后台模板学习4 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
2601_967987374 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor4 小时前
重构Time库的抽象设计
python·重构