pandas说明文档-pandas 官方文档

Pandas 救命指南:不仅教语法,更教如何“看”数据 别总想着背 C++ 那种 `vector` 的代码,到了数据清洗环节,Pandas 实际上是干啥啥错,别的工具可能连 `for` 循环都翻不那

Pandas 救命指南:不仅教语法,更教如何“看”数据 别总想着背 C++ 那种 `vector` 的代码,到了数据清洗环节,Pandas 实际上是干啥啥错,别的工具可能连 `for` 循环都翻不那会儿。你只需求学会如何用 `str` 方式,要么用 `merge` 函数,就能把一堆乱七八糟的 Excel 成品变成干净利落的 DataFrame。 数据对象永不变形 起初得搞清楚,Pandas 是个啥鬼。别被名字骗了,它本质上就是个 DataFrame 引擎,底层就是 numpy 的 `ndarray`,只是加了点“魔法”包装。当你用 `pd.read_csv` 读个 CSV 文件出来时,你拿到的不是一个原始 CSV 字符串,而是一堆经过清洗处理的、内存里直接可用的 Python 对象。
这意味着你不用再去纠结 `pd.DataFrame` 这个类名,日常搞数据处理的时候,直接用 `df` 指代那个 DataFrame 对象,就像直接操作你的手机一样顺溜。 要是数据脏兮兮的,比如还有缺失值,要么列名全是乱码,也别揪心,Pandas 自带叫它“清洗”的超本事。`df.fillna` 函数啥都能干,啥空值都能填,自然,你最好先把那一堆 `NaN` 先剔出去,不然填再多也是填错了位置。举个栗子:你有一张卖货的表,`销售额` 那一列整规整齐,唯独 `日期` 这一列,有一行日期填成了 `1999-01-01`,而后面全是 `2023-10-01`。别急着填,先跑一遍 `df['日期'].isna()` 看看,确认一下是不是确实只有那一行不对,要是是,直接 `df.loc[df['日期']'1999-01-01', '日期'].values = pd.to_datetime('2023-01-02')`,改完再跑一遍统计,看数据对不对。 切片切割:玩弄索引的快感 数据最要命的难题往往是结构不对。
你想看前 10 条记录?直接切片;想看最终一个月?`df.iloc[len(df)-2:]` 要么 `df.iloc[-10:]` 就行。但最狠的是切列。`df['date'].iloc[100:200]` 能切出一段数据,就连能切出一段 `Index`,这时候你要是想把这段数据里的 `date` 列也切出来,直接 `df['date'].iloc[100:200]` 就能搞定。
要是想把整张表切一半两半?`df[df['status']'active']` 要么 `df[df['category']'食品']` 这种布尔索引,瞬间就能把想要的数据框塞进内存里。 特别要注意索引的难题。当你用 `set_index` 给某个列当索引,要么用 `reindex` 重新对齐两列数据时,数据就会变成探戈舞步,这时候 `df['col'].iloc[10]` 就能直接拿到第 10 行对应的那一列数据,不用再去 `df.loc` 绕晕了。
要是数据被切乱了,用 `reindex` 就能帮你把缺失的行补上,哪怕是补空值,要么直接填 `NaN`,反正都能救回来。示例:你有一张销售表,`订单工夫` 和 `支付工夫` 不一样,你想对比同一笔订单,先 `set_index('订单编号')` 让工夫变成索引,然后 `df['支付工夫'].iloc[0]` 就能精准地取出对应那笔订单的支付工夫,不用去手动去匹配行号。 清洗魔法:去杠杆与合并 当你面对一堆 Excel,想要把价格删了、把重复的订单删了?`drop_duplicates` 是最快的工具。它既能用默认值去重,也能用空值去重,还能用来去列。`df.drop_duplicates(['order_id'], keep='first')` 能保留第一条,`keep=False` 就能全删。别急着用 `drop`,先看看 `df.duplicated()` 看看哪些行是重复的,这样操作才保险。 合并(Merge)是 Pandas 的大杀器。别用 VBA 要么 Excel 的 `VLOOKUP`,Pandas 的 `merge` 函数能根据你的自定义条件去抓取数据。
比如你要把 `甲品牌` 和 `乙品牌` 的数据拼在一起,直接 `df1.merge(df2, on='产品ID', how='inner')` 就能干,并且还能按 `product_id` 分组,用 `groupby` 算一下某个产品的总销量,顺便加个总销售额。
要是 `groupby` 出来的结局忒大,内存炸了,记得用 `groupby(discretize=2)` 这种技巧把数值分组成整数,再算销量统计。Tip:要是数据量特别大,合并完再算统计可能会慢,不如先算出主表,用主表去切副表,这样速度稳当多了。 统计分析:从数据到洞察 你当作 Pandas 只有 CRUD 操作?错了,它是统计分析的超级大脑。`describe` 函数能给你一帮数字,那你随意挑个列,用 `df['age'].describe()` 就能拿到均值、中位数、标准差、方差这些关键指标,就连还能画出分布图。
要是你想看分组的统计情况,直接 `df.groupby('region')['sales'].describe()`,一行代码就能搞定。 更了得的是那些专门针对分布图的函数,`hist()` 能画出直方图,`binomial_test()` 就连能做二项分布的假设检验(比如促销期间销量是不是确实增添了)。
要是你需求比较两组数据的差异,用 `ttest` 就能算出 p 值,告诉你这两组数据到底是不是来自同一家工厂。
要是数据里有分类变量,比如 `category`,用 `categorical` 功能能自动把它变成索引,再配合 `factor` 功能,就能算出各种比率,比如哪种口味卖得顶多。 可视化:别总盯着表格看 大量人认定看了表格就够了,实际上 Pandas 供给的绘图本事是业界顶尖的。用 matplotlib 或 seaborn 画个图,比如画 `df['sales'].hist()`,就能直观地看到数据是聚拢在某个区间,还是有长尾分布。
要是想画个直方图带个统计量的提示条,`plt.figure(figsize=(10, 6))` 加上 `plt.hist(x=dates, bins=50)` 就能搞定。 可视化不是非要设计师画,Pandas 自带的 `plot` 函数就能生成各种图。画个散点图比较两个变量,`df.plot.scatter(x='income', y='spending')` 一行代码就出来了。
要是想画个箱线图看分箱数据的分布,`df.boxplot(column='price', by='region')` 就能展现出不同地区的价格差异。 实战演练:把脏数据变干净利落 假设你手头有个名为 `raw_sales.csv` 的 Excel 文件,里面混杂着 `用户 ID`、`订单工夫`、`商品名称` 这些乱七八糟的列,还有 `金额` 列是 `0` 要么 `NaN`,`日期` 列有几行写成了空。别慌,这就是一般/平平的清洗流程。 起初,用 `pd.read_csv` 把它读进来,这时候别急着看,先用 `df.info()` 看一眼列数是不是对,还有哪些列是 `object` 类型(字符串),哪些是 `int` 类型。
然后,对字符串列 `df['customer_id']` 用 `pd.to_datetime` 转换一下日期,把那一堆 '2023/05/20' 都转成标准格式。
接着,用 `groupby('customer_id').count()` 看看每个用户买了多少单,要是某个用户买了 0 单,那这个人就要被删了;要是买了 1000 单,那这个人就是 VIP,可能得单独拎出来。核心在于先理解数据结构,再动手。 最终,别忘了检查有没有遗漏。用 `df.info()` 再次确认一下列名是不是乱了,有没有多出来的列。整个流程下来,原本那个乱糟糟的文件,目前变成了一堆结构清楚、统计逻辑严密的 DataFrame,随时预备被用来做 RPA 脚本,要么用来训练模型。
记住,Pandas 的强大不在于你能写出多少行代码,而在于你能看懂它讲的那些故事。
本文来自网络,不代表演示站立场。转载请注明出处: http://zuowen.2jianshe.cn/article/39/447233.html
上一篇求职心得体会800字-求职心得八千字
下一篇 写中秋节的英语作文100-中秋英文作文 100 字

为您推荐