编辑器:jupyter notebook
- 生成100行3列[60,100)的随机整数
- 增加一列数据
- 增加一行数据
语文 99.0 数学 99.0 英语 99.0 总成绩 564.0 dtype: float64
语文 60.0 数学 61.0 英语 60.0 总成绩 414.0 dtype: float64
语文 82.0 数学 81.0 英语 80.0 总成绩 484.0 dtype: float64
0 492.0 dtype: float64
492.0
- 如存在多个众数,则求它们的均值
0 90.0 dtype: float64
- 生成2行10列[60,100)的随机整数
array([[ 62, 90, 66, 69, 90, 96, 87, 90, 91, 88], [ 74, 93, 76, 99, 65, 78, 72, 75, 73, 65], [113, 80, 71, 84, 80, 96, 108, 108, 96, 90], [106, 118, 107, 76, 73, 96, 86, 65, 102, 99]])
- 随机生成指定均值及标准差的数组
- 均值为90,标准差为2000,100个元素
- 计算25%的分位数,Q1,下四分位数
2808.5524129961677
- 计算75%的分位数,Q3,上四分位数
2808.5524129961677
- 计算四分位距,Q3-Q1
- 异常值检测
- 设定上限值和下限值
- 异常值筛选
- 异常值处理
- 如高于上限值,则使用上限值替换
- 如低于下限值,则使用下限值替换
- 生成5行5列[0, 1)的随机小数
- 所有列保留2位小数
- 使用字典方法
- A列保留1位小数
- B列保留2位小数
- 使用Series方法
- C列保留1位小数
- D列保留2位小数
2.1 apply方法
- Series和Dataframe对象均有此方法
- 指定列保留0位小数的百分比
0 69% 1 46% 2 19% 3 5% 4 45% Name: A, dtype: object
- 指定列保留2位小数的百分比
0 68.96% 1 45.66% 2 18.66% 3 4.97% 4 44.94% Name: A, dtype: object
- 所有列保留2位小数的百分比
TypeError: unsupported format string passed to Series.__format__
2.2 applymap方法
- Dataframe对象的方法,不支持单列的操作
- 所有列保留2位小数的百分比
2.3 map方法
- Series对象的方法,不支持多列的操作
- 指定列保留2位小数的百分比
0 68.96% 1 45.66% 2 18.66% 3 4.97% 4 44.94% Name: A, dtype: object
- map字典操作,字段值映射
- 生成10行5列[1000, 10000)的随机整数
0 6,202 1 7,905 2 6,277 3 1,032 4 6,132 5 6,689 6 4,470 7 8,991 8 8,596 9 6,119 Name: A, dtype: object
- groupby函数 + 聚合函数
1.1 一列分组一列聚合
1.2 一列分组多列聚合
1.3 多列分组多列聚合
办公 订单编号 一级分类 0 US-2021-1357144 办公 1 CN-2021-1973789 办公 2 CN-2021-1973789 办公 3 US-2021-3017568 办公 4 CN-2020-2975416 办公 ... ... ... 9948 CN-2018-1902956 办公 9949 CN-2018-1902956 办公 9951 CN-2019-3665640 办公 9955 CN-2021-4318875 办公 9958 CN-2018-3557528 办公 [5687 rows x 2 columns] ---------------------------------------------------------------------------------------------------- 家具 订单编号 一级分类 7 CN-2019-4497736 家具 24 US-2020-4150614 家具 25 US-2020-4150614 家具 30 US-2020-4150614 家具 33 CN-2021-3230180 家具 ... ... ... 9931 CN-2020-3557528 家具 9942 CN-2019-3438839 家具 9950 CN-2018-1902956 家具 9953 CN-2021-5146329 家具 9956 CN-2021-4318875 家具 [2244 rows x 2 columns] ---------------------------------------------------------------------------------------------------- 技术 订单编号 一级分类 5 CN-2019-4497736 技术 10 CN-2018-4195213 技术 11 CN-2021-5801711 技术 13 CN-2019-2752724 技术 14 CN-2019-2752724 技术 ... ... ... 9935 CN-2019-1364986 技术 9939 US-2021-4180783 技术 9952 US-2018-5128542 技术 9954 CN-2021-4318875 技术 9957 CN-2021-4318875 技术 [2028 rows x 2 columns] ----------------------------------------------------------------------------------------------------
3.1 指定列使用多个聚合函数
3.2 指定列使用指定聚合函数
- 统计频数最高(行计数最多)的二级分类
- 以及总数量和总金额
'装订机'
- 以一级分类为分组,统计销售数量最多的二级分类
'装订机'
一级分类 办公 装订机 家具 椅子 技术 电话 dtype: object
- pd.Dataframe.transform()
- 统计各省的金额以及占所属大区的比例
6.1 groupby+字典+聚合函数
6.2 groupby+Series+聚合函数
- 主要为了提升运算性能
大区 object 金额 int64 dtype: object
- 测试非category数据类型的运算时间
Wall time: 138 ms
Out[34]:
大区 东北 96128025 中南 96518713 华东 96023787 华北 96369953 西北 96451240 西南 95335807 Name: 金额, dtype: int64
- 测试category数据类型的运算时间
Wall time: 32 ms
Out[36]:
大区 东北 96128025 中南 96518713 华东 96023787 华北 96369953 西北 96451240 西南 95335807 Name: 金额, dtype: int64
1.1 shift函数
- 销量增长率 = (本期销量 - 上期销量) / 上期销量
1.2 diff函数
- 偏移后计算差异
1.3 pct_change函数
- 偏移后计算差异百分比
1.4 rolling函数
- 滚动计算,计算近3天平均销量
2.1 cut函数
2.1.1 指定箱数,等距分箱
- 10组
[36.4, 48.2) 17 [107.2, 119.118) 15 [1.0, 12.8) 11 [24.6, 36.4) 10 [71.8, 83.6) 10 [60.0, 71.8) 9 [95.4, 107.2) 9 [48.2, 60.0) 7 [12.8, 24.6) 6 [83.6, 95.4) 6 Name: 等距分箱, dtype: int64
2.1.2 指定区间分箱
- [0, 60, 80, 100, 120]
[0, 60) 51 [100, 120) 22 [60, 80) 17 [80, 100) 10 Name: 指定区间分箱, dtype: int64
不及格 51 优秀 22 一般 17 良好 10 Name: 指定区间分箱, dtype: int64
2.2 qcut函数
2.2.1 指定分位数,等频分箱
- 4组
(0.999, 34.75] 25 (34.75, 55.5] 25 (55.5, 94.25] 25 (94.25, 119.0] 25 Name: 等频分组, dtype: int64
2.2.2 指定分位数区间分箱
- [0, 0.3, 0.5, 0.75, 1]
(0.999, 38.7] 30 (55.5, 94.25] 25 (94.25, 119.0] 25 (38.7, 55.5] 20 Name: 指定分位数区间分箱, dtype: int64
- split方法,已确定拆分结果的列数
- 只将省份和城市拆分为新字段
0 [广东省, 深圳市, 光明区, 公明街道] 1 [广东省, 深圳市, 光明区, 公明街道] 2 [广东省, 深圳市, 光明区, 公明街道] 3 [广东省, 深圳市, 宝安区, 沙井街道] 4 [广东省, 深圳市, 宝安区, 石岩街道] Name: 收货地址, dtype: object
- 将拆分结果全部转为新字段
- split和join方法,不确定拆分结果的列数
4.1 stack方法
- 将除索引列外的字段转为最内层的行索引
4.2 melt方法
- 宽表转为长表
5.1 unstack方法
- 将最内层的行索引转为字段
Index(['手机', '电脑'], dtype='object', name='品类')
5.2 pivot方法
- 透视列,没有聚合功能
1.1 左连接
1.2 右连接
1.3 外连接
1.4 内连接
1.5 交叉连接
- 笛卡尔积
2.1 左连接
2.2 右连接
2.3 外连接
2.4 内连接
3.1 外连接
3.2 内连接
表的横向合并:merge方法(支持交叉连接),pd.merge 或 df.merge;join方法(不支持交叉连接),连式写法 df.join;
表的纵向合并:concat方法(横向合并仅支持内外连接)或 append方法
- orient: {'split', 'records', 'index', 'columns', 'values', 'table'}
- 同一工作簿下的不同工作表
年 月 2020 1 1 2 1 3 1 6 1 9 1 12 1 dtype: int64
- 针对日期字段分组聚合的快捷方式
- 重采样:升采样,降采样
- 升采样:低频率到高频率采样
- 降采样:高频率到低频率采样
- Time series / date functionality — pandas 1.5.0 documentation
- 时间频率:
- AS: 年初
- A: 年末
- YS: 年初
- Y: 年末
- QS: 季初
- Q: 季末
- MS: 月初
- M: 月末
- W: 周
- D: 日
- H: 时
- T: 分
- min: 分
- S: 秒
- W-SUN: 周(周日结束)Sunday
- W-MON: 周(周一结束)Monday
- W-TUE: 周(周二结束)Tuesday
- W-WED: 周(周三结束)Wednesday
- W-THU: 周(周四结束)Thursday
- W-FRI: 周(周五结束)Friday
- W-SAT: 周(周六结束)Saturday
4.1 设置日期为索引
4.2 按月统计数据
4.3 按季统计数据
4.4 按年统计数据
4.5 日期切片操作
- open(开始值,开盘价)
- high(最高值)
- low(最低值)
- close(结束值,收盘价)
- 随机抽样
6.1 随机抽取1个
6.2 随机抽取50%
6.3 允许重复抽样
6.4 按权重抽样
贵妃 权重 貂蝉 4 395 西施 3 293 王昭君 2 200 杨玉环 1 112 dtype: int64
6.5 设置随机种子
- 获取当前时间
<Arrow [2022-09-27T15:48:40.889286+08:00]>
- 从字符串解析日期
<Arrow [2021-02-14T12:12:00.210000+00:00]>
- 实例化日期
<Arrow [2021-02-14T00:00:00+00:00]>
- 获取当前时间
- 获取年份部分
- 获取日期部分
- 获取时间部分
- 向后偏移3周
- 明年的上月的今天
- 向前偏移1小时
- 向后偏移2小时
(2022, datetime.date(2022, 9, 27), datetime.time(15, 55, 43, 706035), <Arrow [2022-10-18T15:55:43.706035+08:00]>, <Arrow [2023-08-27T15:55:43.706035+08:00]>, <Arrow [2022-09-27T14:55:43.706035+08:00]>, <Arrow [2022-09-27T17:55:43.706035+08:00]>)
- 开始:2021-01-01,结束:2021-01-31,间隔5天
DatetimeIndex(['2021-01-01', '2021-01-06', '2021-01-11', '2021-01-16', '2021-01-21', '2021-01-26', '2021-01-31'], dtype='datetime64[ns]', freq='5D')
- 开始:2021-01-01,间隔2天,数目5个
DatetimeIndex(['2021-01-01', '2021-01-03', '2021-01-05', '2021-01-07', '2021-01-09'], dtype='datetime64[ns]', freq='2D')
- 开始:2021-01-01,结束:2021-01-31,间隔1周
DatetimeIndex(['2021-01-03', '2021-01-10', '2021-01-17', '2021-01-24', '2021-01-31'], dtype='datetime64[ns]', freq='W-SUN')
- 开始:2021-01-01,间隔3小时,数目8个
DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 03:00:00', '2021-01-01 06:00:00', '2021-01-01 09:00:00', '2021-01-01 12:00:00', '2021-01-01 15:00:00', '2021-01-01 18:00:00', '2021-01-01 21:00:00'], dtype='datetime64[ns]', freq='3H')
- 开始:2021-01-01 09:00,间隔1分钟,9点开始,数目12个
DatetimeIndex(['2021-01-01 09:00:00', '2021-01-01 09:01:00', '2021-01-01 09:02:00', '2021-01-01 09:03:00', '2021-01-01 09:04:00', '2021-01-01 09:05:00', '2021-01-01 09:06:00', '2021-01-01 09:07:00', '2021-01-01 09:08:00', '2021-01-01 09:09:00', '2021-01-01 09:10:00', '2021-01-01 09:11:00'], dtype='datetime64[ns]', freq='T')
- 开始:2021-01-01,结束:2021-12-31,间隔1月,月末最后1天
DatetimeIndex(['2021-01-31', '2021-02-28', '2021-03-31', '2021-04-30', '2021-05-31', '2021-06-30', '2021-07-31', '2021-08-31', '2021-09-30', '2021-10-31', '2021-11-30', '2021-12-31'], dtype='datetime64[ns]', freq='M')
- 开始:2021-01-01,间隔1年,年末最后1天,数目6个
DatetimeIndex(['2021-12-31', '2022-12-31', '2023-12-31', '2024-12-31', '2025-12-31', '2026-12-31'], dtype='datetime64[ns]', freq='A-DEC')
- 开始:2021-01-01,间隔1年,年初最后1天,数目6个
DatetimeIndex(['2021-01-01', '2022-01-01', '2023-01-01', '2024-01-01', '2025-01-01', '2026-01-01'], dtype='datetime64[ns]', freq='AS-JAN')
3.1 时间序列加减,天为单位
3.2 时间序列加减,月为单位
3.3 时间序列加减,周为单位
3.4 向前(未来)偏移
- 得到最近的月末时间点
3.5 向后(过去)偏移
- 得到最近的季末时间点
3.6 实例化日期
array([[<AxesSubplot:title={'center':'克拉'}>]], dtype=object)
- 克拉分布
- 各纯净度的价格分布
<AxesSubplot:title={'center':'价格'}, xlabel='纯净度'>
- 各纯净度的克拉分布
<AxesSubplot:title={'center':'克拉'}, xlabel='纯净度'>
- 单个维度,各纯净度的频数分布
- 多个维度,各纯净度各颜色的频数分布
<AxesSubplot:xlabel='纯净度'>
以上就是本篇文章【数据分析——Pandas(进阶)】的全部内容了,欢迎阅览 ! 文章地址:http://yejunbin01.xhstdz.com/quote/69674.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 物流园资讯移动站 http://yejunbin01.xhstdz.com/mobile/ , 查看更多