Pandas入门,作业详解

#课程作业2补充——个人笔记#

直播链接:第二课堂作业讲解_哔哩哔哩_bilibili

配合上个笔记:课程作业2——Pandas入门基本操作-CSDN博客

作业用到的数据:
链接:https://pan.quark.cn/s/4f673346914c
提取码:gix8

一.准备工作

打开jupyter NoteBook

参照Python入门(含python基础语法+Miniconda搭建+Jupyter Notebook简单使用)-CSDN博客

新建notebook.如图

然后根据作业要求完成作业

二.作业详解

1. 导入pandas库

import pandas as pd

2. 列名更换为中文

df = pd.read_csv('pokemon.csv',names=['全国图鉴编号','姓名','属性1','属性2','种族值','体力','物攻','防御','特攻','特防','速度'],header=0)

设置header=0,能去除原来的表头

3. 分别存储单属性和双属性的妖怪

单属性妖怪的属性2为空值,双属性妖怪的属性2不为空

故可以利用isnull()函数和notnull()函数

#单属性妖怪的属性2为空值
single = df[df['属性2'].isnull()]
single = single.drop(axis=1,columns=['属性2'],inplace=False)
#inplace参数,默认是False,即只对数据进行修改创建并返回新的对象承载其修改结果
#如果inplace设置为True,那么不创建新的对象直接对原始对象进行修改。但会有警告
single.to_csv('single.csv')

#双属性妖怪的属性2不为空
dual = df[df['属性2'].notnull()]
dual.to_csv('dual.csv')

 4. 保留#重复的第一条记录

用drop_duplicates()函数,keep='first'设置只保留第一次出现的重复行

data = df.drop_duplicates(subset=['全国图鉴编号'],keep='first',inplace=False)
#keep:指定保留哪些重复行,设置为first表示保留第一次出现的重复行
#inplace: 不修改原来的数据,返回新的DataFrame
#subset 指定要考虑重复的列。
data
#删除后出现的重复值

5. 第一属性的种类数量和前三数量对应的种类

nunique()函数返回去重之后不同值的个数,即能求出第一属性的种类数量

df['属性1'].nunique()
#属性1的种类数量
#nunique()函数返回的是去重之后不同值的个数
#unique()函数返回的是去重之后的不同值
df['属性2'].value_counts().head(3)
#value_counts()是计数函数,默认返回降序结果。
#head(3)指定前三行

6.  第一属性和第二属性的组合种类

df.groupby(['属性1','属性2']).size()
#groupby是分组函数,指定属性1和属性2为一组
#groupby().size()是查看分组后每组的数量

7. 找出指定列的最大值,平均值,方差,中位数

用describe()函数求值,用loc函数筛选指定列的指定数据

data = df.describe()
#mean平均值,min最小值,max最大值,std是方差,
data.loc[['mean','std','min','max','50%'],['种族值','体力','物攻','防御','特攻','特防','速度']]
#用loc函数对行和列进行筛选

8. 将体力值超过100的替换为high,不足50的替换为low,否则设为mid

首先用data作为df的副本使用,后面对data进行操作,不影响df原本的数据

用for循环,分别具体到指定行指定列的那个数据,用if语句进行筛选,分别赋值

data = df.copy(deep=True)
#copy()函数用于创建副本默认为浅拷贝即复制了原始df的引用而不是实际的数据如果对副本进行修改会影响原始的 数据
#设置deep=True,深拷贝,不会影响原来的数据
for i in range(len(data)):
    s = data.loc[i,'体力']
    #i的值是从0到800,loc函数指定是体力那列,用i指定行
    if int(s) > 100:
        data.loc[i,'体力'] = 'high'
    elif int(s) < 50:
        data.loc[i,'体力'] = 'low'
    else:
        data.loc[i,'体力'] = 'mid'

8. 对种族值进行降序排列,并存储为csv文件

对值进行降序排列用sort_values()函数

data = df.sort_values(by=['种族值'],ascending=False)
data.to_csv('sort.csv')
data

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值