Python自学入门(八):Pandas之数据处理
创始人
2025-05-28 05:15:38

Python自学入门(一):环境安装
Python自学入门(二):数据类型和运算符
Python自学入门(三):数据类型详解
Python自学入门(四):流程控制
Python自学入门(五):函数和模块
Python自学入门(六):Pandas之数据结构
Python自学入门(七):Pandas之文件操作

5.3 数据处理

#数据描述
data.describe()

在这里插入图片描述

5.3.1 统计

函数作用函数作用
sum()求和min()最小值
media()中位数max()最大值
mean()平均数mode()众数
abs()绝对值prod()乘积
std()标准差var()方差
idxmax()最大值的索引idxmin()最小值的索引
cumsum()计算前n个数的和cummax()计算前n个数的最大值
cummin()计算前n个数的最小值cumprod()计算前n个数乘积
# max min median等
data.max(0)  #0是按列计算 默认按列计算
data.idxmax()  #idxmin()
#每一列最大值-最小值
def myfunc(x):return x.max()-x.min()#选两列数据
data[['open','close']].apply(myfunc,axis=0)

5.3.2 空值

空值可能在数据中是缺失值,也可能使用符号代替,如问号,省略号等。读取数据,一般情况下,空值在DataFrame中显示NaN

import pandas
import numpy as np
data=pandas.read_csv("./data/NaN_data.csv")
data
#判断是否为null,如果该单元格是空值,则显示True(表格形式)
pandas.notnull(data)
#利用numpy判断是否具有空值,表格中包含一个False就是False
np.all(pandas.notnull(data))pandas.isnull(data) #和notnull相反#替换缺失值 取均值填充
data['tradecount'].fillna(data['tradecount'].mean(),inplace=True)
data2=pandas.read_csv("./data/NaN_data.csv")
data2.dropna()  #直接删除缺失值

对于非NaN的空值,比如问号,需要替换掉对应的占位符

data3=pandas.read_csv("./data/Null_data.csv")
data3=data3.replace(to_replace='?',value=np.nan)  #替换成NaN

5.3.3 数据离散化

nba=pandas.read_csv("./data/nba.csv")
nba.head()

在这里插入图片描述

weight = nba['Weight']
# 自动分10组
weight_qcut=pandas.qcut(weight,10)
weight_qcut

在这里插入图片描述

weight_qcut.value_counts()

在这里插入图片描述

# 指定分组区间
bins = [160,180,200,220,240,260,280]
hcut = pandas.cut(weight,bins)
#统计每个区间有多少
hcut.value_counts()
# one-hot编码(独热编码)
dummies=pandas.get_dummies(hcut)
dummies

在这里插入图片描述

5.3.4 数据表合并

#直接合并
pandas.concat([nba,dummies],axis=1) #axis 1行 0 列

表连接,根据一定条件,把两个表中的数据合并到一起,关联的数据合并到一行

left=pandas.read_csv('./data/table1.csv')
right=pandas.read_csv('./data/table2.csv')
result1=pandas.merge(left,right,how='inner',on=['key'])
result2=pandas.merge(left,right,how='left',on=['key'])
result3=pandas.merge(left,right,how='right',on=['key'])
result4=pandas.merge(left,right,how='outer',on=['key'])

在这里插入图片描述

在这里插入图片描述

5.3.5 交叉表和透视表

交叉表查询是将来源于某个表中的字段进行分组,一组列在交叉表左侧,一组列在交叉表上部,并在交叉表行与列交叉处显示表中某个字段的各种计算值。

import pandas
import numpy
import matplotlib.pyplot as plt
data=pandas.read_csv("./data/stock_day.csv")
data=data.set_index('date') 
#将日期是星期几提取出来
date=pandas.to_datetime(data.index).weekday
data['week']=date #加入到数据集中
data['rise']=numpy.where(data['close']>data['open'],1,0) #计算收盘比开盘价高的
count=pandas.crosstab(data['week'],data['rise']) #交叉表

在这里插入图片描述

计算比例

sum=count.sum(axis=1).astype(numpy.float32)
pro=count.div(sum,axis=0)

在这里插入图片描述

数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。

#直接使用透视表,省略之前的计算
data.pivot_table(['rise'],index='week')

在这里插入图片描述

5.3.6 分组聚合

data=pandas.read_excel("./data/group_data.xlsx")
data.head()

在这里插入图片描述

data.groupby(['color'])['price1'].max()

在这里插入图片描述

data.groupby(['color'],as_index=False)['price1'].max()

在这里插入图片描述

相关内容

热门资讯

景德镇饺子粑:用米粉做皮,包上... 景德镇饺子粑,作为赣东北地区极具代表性的传统米制小吃,以其独特的米粉外皮和丰富的时令馅料闻名。这道美...
番茄酱白醋调出红亮汁 鸡胸肉裹糊炸到金黄酥脆,裹上浓稠酸甜的糖醋酱汁,再加上黄瓜的清甜脆爽,颜色红亮诱人,比樱桃还讨喜。 ...
来碗酸甜的甜胚子,兰州人的解暑... 在兰州,夏天最让人惦记的一口,不是冰棍也不是汽水,而是一碗酸甜爽口的甜胚子。甜胚子的历史可不短,它其...
藏在湖南家庭里的小点心,电饭锅... 电饭锅蛋糕前几年在网上火过一阵,湖南人家里的做法更随性,不讲究那些烘焙用的专业工具,家里有电饭锅、鸡...
老屋灶火老陶坛,湘西外婆菜承包... 在湘西的群山之间,几乎每家每户的灶房角落都立着几个陶土坛子。这些坛子不起眼,灰扑扑的,有的还裂了缝用...