徐州网站关键词推广,查企业公司用什么软件,做cpa比较做网站吗,如何在360网站上做软文推广3.8.1 Pandas分箱操作
数据分箱#xff08;Binning#xff09; 是一种数据预处理方法#xff0c;用于将连续型变量的数值范围分割成若干个区间或“箱”#xff08;bins#xff09;#xff0c;将数据按照这些区间进行分类#xff0c;从而转换为离散型变量。这种方法常用…3.8.1 Pandas分箱操作
数据分箱Binning 是一种数据预处理方法用于将连续型变量的数值范围分割成若干个区间或“箱”bins将数据按照这些区间进行分类从而转换为离散型变量。这种方法常用于将数据的变化范围缩小使其更加适合某些分析或模型算法的处理或通过减少异常值的影响来提高模型的稳定性。
等距分箱操作
将数据的取值范围等分为若干个区间区间的宽度相等。例如将数据范围从0到100分为5个区间每个区间的宽度为20。
# 等距分箱
xpd.cut(xdf[Chinese], #要做分箱的数据bins4, #分箱的数目rightTrue, #默认左闭右开labels[差劲,一般,良好,优秀,] #各箱的名称
)
# [(11.92, 32.0] (32.0, 52.0] (52.0, 72.0] (72.0, 92.0]]
# [差劲 一般 良好 优秀]
x.value_counts()Chinese
一般 3
差劲 2
优秀 2
良好 1等频分箱操作
将数据分成若干个区间使每个区间中包含相同数量的数据点。
# 等频分箱
xpd.qcut(xdf[Chinese], #要做分箱的数据q4, #分箱的数目,使得每个箱分得的元素个数基本相同labels[差劲,一般,良好,优秀,] #各箱的名称
)
# [(11.999, 35.0] (35.0, 41.5] (41.5, 66.5] (66.5, 92.0]]
# [差劲 一般 良好 优秀]
x.value_counts()Chinese
差劲 2
一般 2
良好 2
优秀 23.8.2 Pandas时间序列
在数据科学和分析领域时间序列数据是一个非常重要的组成部分。无论是在金融、气象还是其他领域时间序列数据的处理和分析都非常常见。Pandas库为时间序列数据提供了强大的支持使得处理和分析这些数据变得简单高效。本文将带你通过Pandas的一些时间序列功能帮助你更好地理解如何处理、转换和操作时间序列数据。
获取时间数据
pd.Timestamp(2025-02-01) #时刻数据
pd.Period(2025-02-01, freqD) #时期数据:D日 M月 Y年批量生成时间数据
pd.date_range(2025-02-01, periods4, freqD) #生成时刻数据periods是生成的数量freq是按照日/月/年进行生成
pd.period_range(2025-02-01,periods4, freqD) #生成时期数据时间的转换
# 1.to_datetime将时间转换为Timestamp类型
pd.to_datetime(2025.2.1)
pd.to_datetime(2025-02-01)
pd.to_datetime(2025/2/1)
pd.to_datetime(1/2/2025)
# 2.将时间戳转换为时间Timestamp类型
pd.to_datetime(1809459200, units)时间差
date pd.to_datetime(2025.2.1)
date pd.DateOffset(days6)
date pd.DateOffset(months6)
date pd.DateOffset(years6)时间索引与切片
index pd.date_range(2025-02-01, periods100, freqD)
ts pd.Series(np.random.randint(0, 10, size(100,)), indexindex)
ts[2025-02-01] #具体日期
ts[2025-02] #2月份
ts[2025] #2025年
ts[2025-02-01:2025-03-25] #时间范围切片属性
ts.index
ts.index.year #获取所有年份
ts.index.month #获取所有月份
ts.index.day #获取所有日数据移动
index pd.date_range(2025-02-01, periods100, freqD)ts pd.Series(np.random.randint(0, 10, size(100,)), indexindex)
ts.shift(periods1) #向下移动一位
ts.shift(periods-2) #向上移动两位频率转换
ts.asfreq(pd.tseries.offsets.Week())#将频率转换成周
ts.asfreq(pd.tseries.offsets.MonthEnd())#将频率转换成月
ts.asfreq(pd.tseries.offsets.YearEnd())#将频率转换成年
ts.asfreq(pd.tseries.offsets.Hour(), fill_value0)#将频率转换成小时空白处用0填充重采样
重采样通常是指对时间序列数据进行重新采样的过程尤其是在使用 pandas 库时。重采样可以用于改变数据的频率向上采样或向下采样数据。 向下采样将数据从高频率的时间序列转变为低频率比如从小时数据转换为日数据。 向上采样将数据从低频率的时间序列转换为高频率比如从日数据转换为小时数据。
# 对Series进行重采样
index pd.date_range(2025-02-01, periods100, freqD)
ts pd.Series(np.random.randint(0, 10, size(100,)), indexindex)
ts.resample(2D).sum() #每两天的数进行相加
ts.resample(1ME).sum() #每个月的数进行相加
ts.resample(3ME).sum() #每个季度的数进行相加# 对DataFrame进行重采样
df pd.DataFrame({price:np.random.randint(0, 100, size(100,)),time:pd.date_range(2025-02-01, periods100, freqD)
})
#rule指定聚合的方式on指定聚合的列名
df.resample(ruleME, ontime).sum() #求每个月的价格总合3.8.3 Pandas绘图
折线图
通过plot()函数绘制折线图
# Series绘制折线图
s pd.Series(np.arange(0, 2*np.pi, 0.01))
np.sin(s).plot() #DataFrame绘制折线图
df pd.DataFrame(np.random.randint(1, 100, (4,3)), index[zhangsan, lisi, wangwu, zhouliu], columns[Chinese, Math, English])
df.plot()柱状图和条形图
df.plot(kindbar)#柱状图方法1
df.plot.bar()#柱状图方法2
df.plot.bar(stackedTrue) #堆叠类型的柱状图
df.plot.barh()#水平柱状图(条形图)直方图
柱高表示数据的频数柱宽表示各组数据的组距
#参数bins可以设置直方图方柱的个数上限越大柱宽越小数据分组越细致
#bins表示分的组数每组的范围是(max-min)/bins
spd.Series([1,1,1,1,2,2,3,3,3,3,3,4,4,5,6,6,6])
s.plot(kindhist)
#设置density参数为True可以把频数转换为概率
s.plot(kindhist, densityTrue)
#添加kde图
s.plot(kindhist)
s.plot(kindkde)饼图
# 画一列的饼图
# kindpie:表示饼图
# autopct%.1f%%在图中展示.1f%
df[A].plot(kindpie, autopct%.1f%%)# 画所有列的饼图
# subplotsTrue画出所有子图
df.plot.pie(subplotsTrue, autopct%.1f%%)散点图
# 描述两列之间的关系
datanp.random.randn(1000,2)
dfpd.DataFrame(data, columns[A, B])
df.plot(kindscatter, xA, yB)#x为A列y为B列