Pandas - Review

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

title: Pandas回顾及应用
category: 数据分析基础

Pandas 的应用

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['STFangsong']
plt.rcParams['axes.unicode_minus'] = False
%config InlineBackend.figure_format = 'svg'

Series

创建Series对象

# 1
ser1 = pd.Series([122,98,45,79],index = ['一季度','二季度','三季度','四季度'])  # index(*季度)可重复,但在通过该index索引数据时,得到的是一个新的Series
ser1
一季度    122
二季度     98
三季度     45
四季度     79
dtype: int64
# 2
ser2 = pd.Series({
   
   
    '一季度':999,
    '二季度':998,
    '三季度':997,
    '四季度':996,
})
ser2
# 通过字典创建数据系列时,当键(index)重复时,后者覆盖前者
一季度    999
二季度    998
三季度    997
四季度    996
dtype: int64
# 切片
# index切片时左闭右开
ser2[0:2]
一季度    999
二季度    998
dtype: int64
# 通过自己给定的索引切片时,两边均闭合
ser2['一季度':'三季度']
一季度    999
二季度    998
三季度    997
dtype: int64
# 布尔索引
ser1[ser1 > 100]
一季度    122
dtype: int64
# 花式索引
ser1[['一季度','四季度']],ser2[[1,3]]
(一季度    122
 四季度     79
 dtype: int64,
 二季度    998
 四季度    996
 dtype: int64)

Series 的属性 / 方法

# Series的值obj.values
ser2.values
array([999, 998, 997, 996], dtype=int64)
# Series 的index的值 obj.index.values
ser2.index.values
array(['一季度', '二季度', '三季度', '四季度'], dtype=object)
# Series 中的数据是否单调
ser2.is_monotonic
False
# 描述性统计信息
des = ser2.describe()
des
count      4.000000
mean     997.500000
std        1.290994
min      996.000000
25%      996.750000
50%      997.500000
75%      998.250000
max      999.000000
dtype: float64
des['min'],des['25%']
(996.0, 996.75)
ser3 = pd.Series([122,98,45,79,79,122],index = ['一季度','二季度','三季度','四季度','四季度','一季度'])
ser3
一季度    122
二季度     98
三季度     45
四季度     79
四季度     79
一季度    122
dtype: int64
# 独一无二的值
ser3.unique()
array([122,  98,  45,  79], dtype=int64)
# 不重复的值  返回个数
ser3.nunique()
4
# 删除重复值
ser3_ = ser3.drop_duplicates()
ser3_
一季度    122
二季度     98
三季度     45
四季度     79
dtype: int64
# 重复值
ser3.duplicated()
一季度    False
二季度    False
三季度    False
四季度    False
四季度     True
一季度     True
dtype: bool
# 统计频次
ser3.value_counts()
122    2
79     2
98     1
45     1
dtype: int64
ser4 = pd.Series([122,98,np.nan,45,79,np.nan],index = ['一季度','二季度','三季度','四季度','五季度','六季度'])
ser4
一季度    122.0
二季度     98.0
三季度      NaN
四季度     45.0
五季度     79.0
六季度      NaN
dtype: float64
# 是否含有空值
ser4.isnull(),ser4.notnull()
(一季度    False
 二季度    False
 三季度     True
 四季度    False
 五季度    False
 六季度     True
 dtype: bool,
 一季度     True
 二季度     True
 三季度    False
 四季度     True
 五季度     True
 六季度    False
 dtype: bool)
# 删除重复值
ser4.dropna()
一季度    122.0
二季度     98.0
四季度     45.0
五季度     79.0
dtype: float64
# 指定值填充空值
ser4.fillna(100)
一季度    122.0
二季度     98.0
三季度    100.0
四季度     45.0
五季度     79.0
六季度    100.0
dtype: float64
# 将空值填充为平均值
ser4.fillna(ser4.mean())
一季度    122.0
二季度     98.0
三季度     86.0
四季度     45.0
五季度     79.0
六季度     86.0
dtype: float64
# 用空值的前(ffill)/后(bfill)一个数据填充空值
ser4.fillna(method='ffill')
一季度    122.0
二季度     98.0
三季度     98.0
四季度     45.0
五季度     79.0
六季度     79.0
dtype: float64
ser5 = pd.Series(np.arange(1,10))
ser5
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
dtype: int32
# 返回满足条件的值以指定值填充不满足条件的值(默认填充为空值)
ser5.where(ser5<5),ser5.where(ser5<5,99)
(0    1.0
 1    2.0
 2    3.0
 3    4.0
 4    NaN
 5    NaN
 6    NaN
 7    NaN
 8    NaN
 dtype: float64,
 0     1
 1     2
 2     3
 3     4
 4    99
 5    99
 6    99
 7    99
 8    99
 dtype: int32)
# 返回不满足条件的值以指定值填充满足条件的值(默认填充为空值)
ser5.mask(ser5<5),ser5.mask(ser5<5,99)
(0    NaN
 1    NaN
 2    NaN
 3    NaN
 4    5.0
 5    6.0
 6    7.0
 7    8.0
 8    9.0
 dtype: float64,
 0    99
 1    99
 2    99
 3    99
 4     5
 5     6
 6     7
 7     8
 8     9
 dtype: int32)
ser6 = pd.Series(np.random.randint(30,80,50))
ser6
0     72
1     33
2     44
3     30
4     44
5     78
6     56
7     56
8     55
9     72
10    70
11    74
12    41
13    74
14    55
15    76
16    54
17    66
18    63
19    62
20    54
21    32
22    46
23    52
24    57
25    54
26    43
27    64
28    77
29    62
30    46
31    53
32    59
33    72
34    50
35    73
36    58
37    77
38    72
39    49
40    73
41    65
42    74
43    30
44    32
45    79
46    40
47    76
48    41
49    72
dtype: int32
ser6.map(lambda x: round((x ** 0.5 * 10),0))
0     85.0
1     57.0
2     66.0
3     55.0
4     66.0
5     88.0
6     75.0
7     75.0
8     74.0
9     85.0
10    84.0
11    86.0
12    64.0
13    86.0
14    74.0
15    87.0
16    73.0
17    81.0
18    79.0
19    79.0
20    73.0
21    57.0
22    68.0
23    72.0
24    75.0
25    73.0
26    66.0
27    80.0
28    88.0
29    79.0
30    68.0
31    73.0
32    77.0
33    85.0
34    71.0
35    85.0
36    76.0
37    88.0
38    85.0
39    70.0
40    85.0
41    81.0
42    86.0
43    55.0
44    57.0
45    89.0
46    63.0
47    87.0
48    64.0
49    85.0
dtype: float64
# 排序与头部值
ser7 = pd.Series([99,54,78,35,86],['apple', 'banana', 'pitaya', 'pitaya', 'durian'])
ser7
apple     99
banana    54
pitaya    78
pitaya    35
durian    86
dtype: int64
ser7.sort_values(inplace=True)
ser7
pitaya    35
banana    54
pitaya    78
durian    86
apple     99
dtype: int64
ser7.sort_index(inplace = True)
ser7
apple     99
banana    54
durian    86
pitaya    35
pitaya    78
dtype: int64
ser7.nlargest(3),ser7.nsmallest(3)
(apple     99
 durian    86
 pitaya    78
 dtype: int64,
 pitaya    35
 banana    54
 pitaya    78
 dtype: int64)
ser1.plot(figsize = (8,4), kind = 'bar', width = 0.3)   # 水平柱状图:barh
plt.grid(True,alpha = 0.3,axis = 'y', linestyle = '--')   # 设置网格线便于观察。alpha设置透明度、axis设置需要添加网格的轴
plt.xticks(rotation = 0)   # 横坐标标签水平显示
plt.yticks(np.arange(0,151,30))   # 订制纵坐标
for i in range(ser1.size):
    plt.text(i,ser1[i] + 1,ser1[i],ha = 'center')
plt.show()
    
ser1.plot(kind = 'pie',autopct = '%.2f%%',wedgeprops = dict(width = 0.4,edgecolor = 'white'),pctdistance = 0.8)
# wedgeprops = dict(width = 0.4,edgecolor = 'white'),pctdistance = 0.8
# width:环状图宽度;edgecolor:边界颜色;pctdistance:百分比显示距离(距圆心)
plt.ylabel('')
plt.title('2021各季度销售占比')
plt.show()

DataFrame

# 创建dataframe
scores = np.random.randint(60, 101, (5, 3))
courses = ['语文', '数学', '英语']
ids = [1001, 1002, 1003, 1004, 1005]
df1 = pd.DataFrame(data=scores, columns=courses, index=ids)
df1
语文 数学 英语
1001 69 62 82
1002 75 80 60
1003 71 67 70
1004 90 96 65
1005 66 89 93
scores = {
   
   
    '语文': [62, 72, 93, 88, 93],
    '数学': [95, 65, 86, 66, 87],
    '英语': [66, 75, 82, 69, 82],
}
ids = [1001, 1002, 1003, 1004, 1005]
df2 = pd.DataFrame(data=scores, index=ids)
df2
语文 数学 英语
1001 62 95 66
1002 72 65 75
1003 93 86 82
1004 88 66 69
1005 93 87 82
df3 = pd.read_csv('../files/data/2018年北京积分落户数据.csv',
                  index_col='id',
#                  quotechar='包围内容的字符(双引号自动去)',
                 )
df3.head()
name birthday company score
id
1 杨效丰 1972-12 北京利德华福电气技术有限公司 122.59
2 纪丰伟 1974-12 北京航天数据股份有限公司 121.25
3 王永 1974-05 品牌联盟(北京)咨询股份公司 118.96
4 杨静 1975-07 中科专利商标代理有限责任公司 118.21
5 张凯江 1974-11 北京阿里巴巴云计算技术有限公司 117.79
df4 = pd.read_csv('../files/data/bilibili.csv',encoding='GBK')
df4.head()
title url watchnum dm uptime upname
0 阿里云大学课程(云计算、中间件、大数据、云安全) //www.bilibili.com/video/BV1Lv411s7wu?from=search 2954 4 2021/1/21 韭菜滚雪球
1 视觉传达设计专业的小朋友大学课程有哪些,强度怎么样,需要什么技能?学姐给新生的解答与建议 //www.bilibili.com/video/BV1Ea4y1a7CX?from=search 3526 8 2020/7/25 铧仔仔儿的奋斗史
2 CAP:适合高中生的大学课程(上大学之前提前学习大学的课程)同济大学《微积分CAP》 //www.bilibili.com/video/BV1X4411Y7u8?from=search 5597 17 2019/5/11 愚甘杂货铺
3 干货!论文读写系列|写作风格:例文解析(1)|人文社科|教育学|大学课程、知识 //www.bilibili.com/video/BV1VC4y1b7ZA?from=search 1.1万 29 2020/7/26 cici西西熙熙
4 《用户体验与心理-第1期》大学课程 //www.bilibili.com/video/BV1r7411M7gY?from=search 1373 9 2020/2/24 Luka老师
# 以制表符为分隔符的文件
df5 = pd.read_csv('../files/data/chipotle.tsv',delimiter='\t')
df5.head()
order_id quantity item_name choice_description item_price
0 1 1 Chips and Fresh Tomato Salsa NaN $2.39
1 1 1 Izze [Clementine] $3.39
2 1 1 Nantucket Nectar [Apple] $3.39
3 1 1 Chips and Tomatillo-Green Chili Salsa NaN $2.39
4 2 2 Chicken Bowl [Tomatillo-Red Chili Salsa (Hot), [Black Beans... $16.98
df6 = pd.read_excel('../files/data/2020年销售数据.xlsx',header=1,sheet_name = 'Sheet1')
# usecols = [] - 指定列; nrows = 100 - 只读100行; skiprows = np.arange(2,102) - 去跳过前100行
df6.head()
销售日期 销售信息 销售区域 销售渠道 销售订单 品牌 售价 销售数量 销售额
0 2020-01-01 上海拼多多订单182894-455 上海 拼多多 182894-455 八匹马 99 83 8217
1 2020-01-01 上海抖音订单205635-402 上海 抖音 205635-402 八匹马 219 29 6351
2 2020-01-01 上海天猫订单205654-021 上海 天猫 205654-021 八匹马 169 85 14365
3 2020-01-01 上海天猫订单205654-519 上海 天猫 205654-519 八匹马 169 14 2366
4 2020-01-01 上海天猫订单377781-010 上海 天猫 377781-010 皮皮虾 249 61 15189
df7 = pd.read_excel('../files/data/口罩销售数据.xlsx')
df7.head()
日期 销售城市 产品类别 销售员 数量 单价 金额
0 2020-01-01 广州 纯棉口罩 王大锤 6 1 6
1 2020-01-01 武汉 明星口罩 秦红棉 30 30 900
2 2020-01-01 深圳 明星口罩 秦红棉 2 30 60
3 2020-01-03 上海 防雾霾口罩 白元芳 63 28 1764
4 2020-01-04 武汉 明星口罩 白元芳 25 30 750
df8 = pd.read_excel('../files/data/某视频网站运营数据.xlsx')
df8.head()
video_id title channel_title tags views likes dislikes comment_count
0 2kyS6SvSYSE WE WANT TO TALK ABOUT OUR MARRIAGE CaseyNeistat SHANtell martin 748374 57527 2966 15954
1 1ZAPwfrtAFY The Trump Presidency: Last Week Tonight with J... LastWeekTonight last week tonight trump presidency|"last week ... 2418783 97185 6146 12703
2 5qpjK5DgCt4 Racist Superman | Rudy Mancuso, King Bach & Le... Rudy Mancuso racist superman|"rudy"|"mancuso"|"king"|"bach"... 3191434 146033 5339 8181
3 puqaWrEC7tY Nickelback Lyrics: Real or Fake? Good Mythical Morning rhett and link|"gmm"|"good mythical morning"|"... 343168 10172 666 2146
4 d380meD0W0M I Dare You: GOING BALD!? nigahiga ryan|"higa"|"higatv"|"nigahiga"|"i dare you"|"... 2095731 132235 1989</
Python爬取京东商品评论 翻页爬取的关键是找到真实地址的“翻页”规律。我们分别点击第1页、第2页、第3页,发现不同页码的除了page参数不一致,其余相同。第1页的“page”是1,第2页的“page”是2,第2页的“page”是2,以此类推。我们嵌套一个For循环,并通过pandas存储数据。运行代码让其自动爬取其他页面的评论信息,并储存t.xlsx的文件中。我们点击评论翻页,发现网址未发生变化,说明该网页是动态网页。请求参数:num_iid=71619129750&page=1。参数说明:item_id:商品ID。 阅读详情

相关推荐

pandas字符串操作太慢?用Polars和PyArrow提速20倍实战指南

字符串处理是数据清洗中最常见的基础操作,其性能直接受底层数据结构与执行引擎影响。传统pandas将字符串存为object类型,导致频繁Python对象引用、无法向量化及缓存不友好,造成严重性能瓶颈。现代解决方案转向列式存储架构,依托Polars的Arrow原生字符串计算和PyArrow的SIMD加速正则引擎,实现真正向量化与内存连续访问。该技术路径不仅显著降低CPU缓存未命中率,还支持JIT编译、Unicode鲁棒处理与零拷贝转换,广泛适用于电商评论清洗、医疗文本标准化、客服工单解析等含大量非结构化文本的工

weixin_34277853的博客 329

PandasReview

PandasReview

Pandas SettingWithCopyWarning 根本原因与零警告实践指南

在数据分析中,Pandas 的视图(view)与副本(copy)机制是内存优化的核心设计,其原理源于 NumPy 底层的切片规则:规则索引返回视图以节省资源,而布尔索引或花式索引则触发副本。这种不确定性导致赋值行为不可预测,进而引发数据污染风险。技术价值在于平衡性能与安全性,广泛应用于金融风控、电商报表、AB测试等对数据一致性要求极高的场景。本文聚焦 SettingWithCopyWarning 这一关键信号,结合链式索引、.loc 原子操作、.copy() 显式声明及 Pandas 3.0 的 Copy-

weixin_33901926的博客 320

Pandas初学笔记

前言 Pandas是建立在Numpy上的一个Python数据处理库,能够轻松处理带标签数据和关系数据。 creating, reading and writing 创建数据 用到的函数主要是DataFrame和Series import pandas as pd pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']}) ##DataFrame 是表格,创建格式如上,输出如下图一,默认

qq_47460531的博客 287

如何用Python读取Amazon的Review数据

Amazon(http://jmcauley.ucsd.edu/data/amazon/)(https://nijianmo.github.io/amazon/index.html)数据集包含来自亚马逊的产品评论和元数据,其中包括1996年5月至2014年7月的1.428亿条评论。如果我们需要用到Amazon的评论数据,那就要先下载好数据集。

白水的博客 3564

pythonpandas reviews

Docs https://pandas.pydata.org/ 一、常用组合模块 numpy、pandas 1、1、导入 import bumpy as np Import pandas as pd 1.2、初始化不为空  二、数据结构 2.1、Series Series 是一个种带标记的一维数组,能容纳任何类型的数据(整型、字符串、浮点数、python对象,等等)。坐标轴标签被集中性的指向作为索引。创建一个Series的基本方法如下: S =p

CherryXieのblog 1150

Pandas 100题 -- 这十套练习,教你如何使用Pandas做数据分析

这段时间,把网上流传的Pandas的100题做完了,总体感觉就是巩固了一些知识,也学习到了一些,难点还是理解题意吧。 题目和答案来自科赛网 https://www.heywhale.com/mw/project/59e77a636d213335f38daec2: 这十套练习,教你如何使用Pandas做数据分析 我的练习思路是这样的:将所有题目复制到jupyter中,按照题目要求写代码,写一题切换一个cell(jupyter切分一个cell的快捷键是:ctrl + shift + 减号) 下面是习题用到

m0_52829559的博客 3661

数据分析_Pandas基础练习题9道(附数据)

'''目标:修复数据中异常时间的数据,将异常时间数据统一减少100实现方式:自定义函数1.观察数据找到异常数据所在处:“Yr_Mo_Dy”2.查看“Yr_Mo_Dy”数据类型:datetime643.提取异常的内容:提取日期中的年份4.将提取出来的年份减去1005.将处理好的年份拼接月份和天数的信息:datetime.date()用于拼接年份月份以及天数6.返回处理后的日期(年月日)

weixin_46578004的博客 8354

review_pandas_multiindex

简介:stack;unstack;multiindex;get_level_values(-1)

Fergus的博客 175

MiniMax M3真的量大管饱?实测review pandas代码库

总的来说,MiniMax M3是想要在Agent中杀出重围,找到自己的一块领地,但可能并不容易,Opus4.7、GPT5.5两座大山在前,而且有Claude Code和Codex这样的顶级框架,但是这一次M3确实已经在试探着去接近,我觉得是好事。6月第一周,MiniMax M3出来了,依旧的量大管饱,Token Plan定价的讨论声不少,我连夜测试用M3去review pandas代码仓库,这是小时级别的任务,效果有点出乎意料。为什么说之前一百万上下文只是挂在天上的参数,用着不爽呢?

分享Python、数据分析、人工智能前沿知识 435

python合并两个数据框_python – 组合两个pandas数据框(在公共列上...

我有2个数据帧:restaurant_ids_dataframeData columns (total 13 columns):business_id 4503 non-null valuescategories 4503 non-null valuescity 4503 non-null valuesfull_address 4503 ...

weixin_39978696的博客 288

python之—将一个表格中相同名字的行的数据合并

找了很多资料想要将自己数据集中相同id的行进行整合,(单纯数据合并): 例如数据: id name review 1 mi good 1 mi great 2 k nice 2 k really 合并之后效果: id name review 1 mi [good,great] 2 k [nice

ruijieli_的博客 1万+

python 更新所有依赖包的方法

以下代码在windows 10 及 python3.6 环境下验证通过 # 碰到问题: python -m pip install --upgrade pandas # 升级pandas包,但我的环境下,运行完卸载后, 就因为权限问题中断安装新版本的包了 pip install -U numpy # 升级numpy包,也是在运行完卸载后就中断安装新版本的了 # 解决过程如下: pip i...

诸葛老刘的博客 7648

一行命令统一Python代码风格,psfblack拿下41.5k Star

Python代码格式化工具Black以其"固执己见"的设计理念获得41.5k GitHub星标。该项目由Python基金会维护,主张开发者专注逻辑而将格式完全交给工具处理,通过强制执行统一风格显著提升协作效率。Black严格遵循PEP 8规范但减少配置选项,支持Python 3.10+和Jupyter Notebook,被pytest、Django等知名项目及多家科技公司采用。安装简单(pip install black),使用单条命令即可格式化代码,内置AST验证确保不改变程序逻辑。其强制统一的风格有效减

2501_93471450的博客 220

高效的10个Pandas函数,你都用过吗?

Pandaspython中最主要的数据分析库之一,它提供了非常多的函数、方法,可以高效地处理并分析数据。让pandas如此受欢迎的原因是它简洁、灵活、功能强大的语法。 这篇文章将会配合实例,讲解10个重要的pandas函数。其中有一些很常用,相信你可能用到过。还有一些函数出现的频率没那么高,但它们同样是分析数据的得力帮手。 介绍这些函数之前,第一步先要导入pandas和numpy。 import numpy as np import pandas as pd Query Query是pandas的过滤查

Silence_01的博客 262

如何用Pandas轻松处理时间序列数据?掌握这6个方法你也能成为专家

掌握6个实用方法,轻松解决时间序列处理难题。本文结合python数据分析pandas应用,涵盖日期解析、重采样、移动窗口等核心技巧,适用于金融、销售等场景,提升数据处理效率,值得收藏。

CodeVibe的博客 1060

dataframe时间聚合季度月份

df_m.resample(rule= 'Q', on='review_date').agg({ 'open':'first', 'high':'max', }) 参数: rule: Q 季度 M月份 W星期 on: 基于哪列时间数据聚合

Caiqiudan的博客 1677

Pandas 秘籍(一)

自从 2012 年被《哈佛评论》(Harvard Review)称为,“21 世纪最性感的工作”之后,数据科学的知名度迅速上升。在 2016 年和 2017 年,它被 Glassdoor 排名第一。行业的需求助推了数据科学的飞速普及。几个应用在新闻中引起了轰动,例如 Netflix 提出了更好的电影推荐,IBM 沃森在 Jeopardy 击败了人类,特斯拉制造了无人驾驶汽车,美国职棒大联盟的球队发现了被低估的前景以及谷歌学习识别互联网上的猫。

龙哥盟 2344
上一篇: Numpy-Review
下一篇: 数据预处理
HoneyGrapefruit
博客等级 码龄7年 408粉丝 54原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值