首页 > 其他分享 >Pandas入门,作业详解

Pandas入门,作业详解

时间:2024-07-21 11:29:30浏览次数:10  
标签:loc 入门 df 函数 详解 csv data 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

标签:loc,入门,df,函数,详解,csv,data,Pandas,属性
From: https://blog.csdn.net/2301_80392115/article/details/140583973

相关文章

  • 猫头虎 Python知识点分享:pandas--read_csv()用法详解
    ......
  • 将 pandas 数据框中的列移动到大型数据框中的最后一列的最佳方法
    我有一个包含100多列的pandas数据框。例如,在以下df:df['A','B','C','D','E','date','G','H','F','I']如何将日期移动到最后一列?假设数据帧很大并且我无法手动写入所有列名称。以下是将pandas数据框中的列移动到大型数据框......
  • 从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力
    Polars针对处理已排序的数据进行了优化。要访问这些优化,你需要使用set_sorted标志告诉Polars数据已经排序。set_sorted主要用于以下两种情况:标记单个或多个列已排序:当你知道DataFrame的某个或某些列是按升序或降序排列时,你可以使用set_sorted来标记这些列。这将告诉P......
  • Spring Resources 入门
    1.介绍Resources是Spring框架中的一个核心模块,用于处理资源文件的访问。它提供了一种方便的方式来访问不同类型的资源,如文件、类路径下的资源、网络上的资源等。Spring提供了统一的资源访问机制,使得开发者可以更加方便地操作各种资源。接下来让我们来学习关于Resource......
  • IDEA的APIPost接口测试插件详解
    APIPOST官方网址一、安装APIPost插件打开IntelliJIDEA:启动您的IntelliJIDEA开发环境。导航到插件设置:在Windows或Linux上,点击File>Settings。在macOS上,点击IntelliJIDEA>Preferences。搜索并安装APIPost插件:在设置窗口中,选择Plugins。点击Marketplace标签......
  • pandas.parser.CParserError:标记数据时出错
    我正在尝试使用pandas操作.csv文件,但收到此错误:pandas.parser.CParserError:标记数据时出错。C错误:第3行应有2个字段,看到12我尝试阅读pandas文档,但什么也没找到。我的代码很简单:path='GOOGKeyRatios.csv'#print(open(path).read())data=p......
  • Python Pandas - 读取 CSV 或 Excel
    我允许用户上传CSV或Excel文件。我正在使用pandas读取文件并创建数据框。由于我无法预测用户将上传哪种文件类型,因此我将pd.read_csv()和pd.read_excel()包装在try/except块中。ifform.validate_on_submit():input_filename=secure_filename(form.file.da......
  • 具有块大小选项的 Python pandas read_sas 因索引不匹配而失败并出现值错误
    我有一个非常大的SAS文件,无法容纳在我的服务器内存中。我只需要转换为镶木地板格式的文件。为此,我使用pandas中chunksize方法的read_sas选项分块读取它。它主要是在工作/做它的工作。除此之外,一段时间后它会失败并出现以下错误。此特定SAS文件有794......
  • Pandas 哈希表给出 key error:0 和 get_item
    我试图获取两个pandas数据表的相同元素,对数据进行索引并将其合并。我将它用于大量数据(数百万)。第一个表(df)是恒定的,第二个表(d2)在每个循环中都在变化,新元素将与第一个表合并。这是我的此过程的代码:df=pd.read_csv("inputfile.csv",header=None)d1=pd.DataFram......
  • 如何填充用 geopandas 溶解地理数据框时创建的多多边形中的孔?
    我的目标是绘制MSOA(英国的连续地理单位)集群的边界,为此我从此处下载了MSOA边界的shapefile。然后,我添加一列簇标签并使用geopandas进行溶解。df.dissolve(by='label',aggfunc='sum')当我使用Folium绘制时,有多个内孔,如附图所示。我该如何删除这些?#create......