十分钟掌握Pandas基本操作(上)

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨老肥 

来源丨老肥码码码(algo_and_data)

为了更好地掌握数据科学必备库Pandas的基本使用,本文通过精灵宝可梦的数据集实战,我们一起过一遍Pandas的基本操作,文中的代码都附有注释,并给出了结果的配图。

鉴于篇幅,本文分为上下两篇,另外这个有意思的数据集可以直接在后台回复「宝可梦」获得。

话不多说,我们开始吧!

  • 导入pandas库,并读取csv文件

import pandas as pd
df=pd.read_csv('pokemon/Pokemon.csv')

  • 查看DataFrame信息

df.info()        # 数据类型,内存消耗等信息
df.describe()    # 统计特征,均值方差等

  • 查看DataFrame的前几行以及后几行

pd.head(n=5)  # 可以添加参数n,表示显示几行
pd.tail()

  • 显示行列信息

df.index    # 列索引
df.columns  # 行索引
df.values   # array对象
df.dtypes   # 列元素属性

  • 删除行列

df.drop(['#'],axis=1,inplace=True)
# 删除‘#’列数据,在原DataFrame上改变
df.drop([1,2,3],axis=0)
# 删除行索引为1、2、3的行,不在原DataFrame上改变

  • 修改列名(两种方法将‘Type 1’以及‘Type 2’中间的空格去掉)

df.rename(columns={'Type 1':'Type1','Type 2':'Type2'})
df.columns=df.columns.str.replace(' ','')

  • 数据观察

df['Defense'].mean()     # 所有宝可梦Defense的均值
df['Attack'].argmax()    # Attack最高的行索引
df['Sp.Atk'].idxmax()    # Sp.Atk最高的行索引
df.sort_values('HP',ascending=False).head(3)
# HP最多的前三条数据
df['Type1'].unique()     # Type1一共有哪些种类
df['Type1'].nunique()    # Type1一共有几种
df['Type2'].value_counts()
# Type2每种共有多少条

  • 检测空值

df.isnull().sum().sort_values(ascending=False)
# 将空值判断进行汇总,按从高到低排序

  • 空值填充

df['Type2'].fillna(value="Unknown",inplace=True)
# 将所有空缺值填为Unknown
df['Type2'].fillna(df['Type1'], inplace=True)
# 将所有Type2空缺值填为其对应Type1的值

  • 删除空值

df.dropna(how='any')
# 去除所有包含空值的行

  • 去重

df.drop_duplicates(['Type1'],keep='first')
# 去除相同的Type1的数据,仅保留第一个

  • 数据条件查询

df[df['Name']=='Squirtle']
# 查看杰尼龟的数据
df[df['Type1'].isin(['Fire'])]
# 查看所有Type1为Fire的数据
df[(df['Generation']==1)&(df['Attack’]>=100)]
# 查看Generation为1并且攻击力大于100的宝可梦

  • 数据访问方式(单行索引)

df.loc[3]   # 访问行索引为3的数据
df.iloc[3]  # 访问第4行数据,两行代码结果相同

  • 数据访问方式(区域索引,先行后列)

df.iloc[:5,:2]    # 数据前5行前两列,按位置索引

df.loc[10:15,['Generation','Attack','Sp.Atk']]
# 数据行标签10-15,列标签Generation,Attack和Sp.Atk,按标签索引
df.loc[[10,11,12,13,14,15],['Generation','Attack','Sp.Atk']]
# 与上述写法结果相同

df.loc[(df['Legendary']==True)|(df['Type1']=='Grass')]
# Legendary为真或者Type1为Grass的数据
  • 参考资料

Pandas官方文档

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:   裁员1100人:华为,还是对中年人下手了 程序员转行卖煎饼送外卖,称找回了自己 新手必会的 9 个 Python 技巧! 面对Redis持久化连环Call,你顶得住吗?

在看点这里好文分享给更多人↓↓
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值