草庐IT

数据分析 | Pandas 200道练习题,每日10道题,学完必成大神(4)

小鱼干儿♛ 2023-12-07 原文

文章目录

前期准备

本章的十道题与前面的试题相连接,数据集用的同一个数据集一些操作也是基于上一个练习的

本次导包多导入了一个绘图的包,在这里我们只是简单的应用,后面会有详细的讲解用法

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

数据集没有的可以私信我,也可以直接去我的资源里面找

df = pd.read_excel('data1.xlsx')
def fun(x):
    a,b = x.split('-')
    a = int(a.strip('k'))*1000
    b = int(b.strip('k'))*1000
    return int((a+b)/2)
df['salary'] = df['salary'].apply(fun)
bins = [0,5000,20000,50000]
group_names = ['底','中','高']
df['categories'] = pd.cut(df['salary'],bins,labels=group_names)
df

1. 计算salary列的中位数

中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

# 方式1
np.median(df['salary'])
# 方式2
df['salary'].median()

2. 绘制薪资水平频率直方图

这个默认是分为10组,分别统计每组出现的次数

df.salary.plot(kind='hist')
# 改变分组数
df.salary.plot(kind='hist',bins=20)

3. 绘制薪资水平密度曲线

类似于频率直方图,只不过分组更小了,绘图方式采用的是曲线

df.salary.plot(kind='kde',xlim=(0,70000))

4. 删除最后一列categories

删除指定列

# 方式一 会直接删除原数据
del df['categories']  

# 方式二 默认不会删除原数据, 只有当inplace=True 才删除原数据
df.drop(columns=['categories'],inplace=True)  # 方式二

5. 将df的第一列与第二列合并为新的一列

因为这里的createTime列是时间序列,所以不能直接的合并,需要我们先将数据类型改变为str

# 将df的第一列与第二列合并为新的一列
# 需要将时间类型的数据装换成字符类型,使用的是`astype`类型
df['test'] = df['createTime'].astype('str')+ df['education']
df.head()

6. 将education列与salary列合并为新的一列

这个同第五题类似,都是合并两个列,都需要改数据类型

7. 计算salary列最大值与最小值之差

找出最大值和最小值做差

# 方式1
df['salary'].max()-df['salary'].min()
# 方式2 使用numpy中的方法
np.ptp(df['salary'])

8. 将第一行和最后一行拼接到一个DataFrame中

主要就是取对应行的操作和将不同的行合并起来

pd.concat([df[:1],df[-1:]])


另一种方式
取出数据然后将数据生成一个新的DataFrame

pd.DataFrame([df.iloc[0],df.iloc[-1]])

9. 将第8行数据添加到末尾

主要包括两个步骤,取出数据,添加数据

#  取出数据有两种信息
df[7:8]  # 使用切片操作
df.iloc[7]  # 使用.iloc取值

# 将第8行数据添加到末尾
df.append(df.iloc[7])

10. 查看每列的数据类型

dtypes 是属性,不用加括号

df.dtypes

# 也可以使用,但是展示的信息就比较多了
df.info()

本章我们学习了和合并列,添加新的行,删除指定列以及使用matplot
lib绘制一些简单的图形等功能,这些功能都是以后常用的,我在讲解的时候也拓展了不同的解题方式,希望大家发展思路,多多尝试。

期待大家的三连

有关数据分析 | Pandas 200道练习题,每日10道题,学完必成大神(4)的更多相关文章

  1. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  2. 由于 libgmp.10.dylib 的问题,Ruby 2.2.0 无法运行 - 2

    我刚刚安装了带有RVM的Ruby2.2.0,并尝试使用它得到了这个:$rvmuse2.2.0--defaultUsing/Users/brandon/.rvm/gems/ruby-2.2.0dyld:Librarynotloaded:/usr/local/lib/libgmp.10.dylibReferencedfrom:/Users/brandon/.rvm/rubies/ruby-2.2.0/bin/rubyReason:Incompatiblelibraryversion:rubyrequiresversion13.0.0orlater,butlibgmp.10.dylibpro

  3. ruby - ri 有空文件 – Ubuntu 11.10, Ruby 1.9 - 2

    我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da

  4. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

  5. ruby - 安装 tiny_tds 在 mac os 10.10.5 上出现错误 - 2

    我正在使用macos,我想使用ruby​​驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System

  6. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

  7. ruby-on-rails - 在 osx 10.9.3 上使用 RVM 安装 ruby​​-1.9.3-p547 时出错 - 2

    如何解决这个错误:$rvminstall1.9.3Searchingforbinaryrubies,thismighttakesometime.Nobinaryrubiesavailablefor:osx/10.9/x86_64/ruby-1.9.3-p547.Continuingwithcompilation.Pleaseread'rvmhelpmount'togetmoreinformationonbinaryrubies.Checkingrequirementsforosx.Certificatesin'/usr/local/etc/openssl/cert.pem'arealr

  8. u盘安装系统(win10为例) - 2

    下载微PE工具箱进入官网下载微PE工具箱-下载 安装好后,打开微PE工具箱客户端,选择安装PE到U盘 PE壁纸可选择自己喜欢的壁纸,勾选上包含DOS工具箱,个性化盘符图标 下载原版系统进入网站下载镜像NEXT,ITELLYOU如果没有账号,注册一下就好进入选择开始使用选择win10 这里我们选择消费者版,用迅雷把BT种子下载下来 下面的两个盘符,是PE工具箱安装进U盘后,分成的盘符,注意EFI的盘符,这里面不能删东西,也不能添东西,另一个盘符可以当做正常的U盘空间使用,我们现在需要把下载下来的景象文件复制到正常的U盘空间中去 这个时候我们的系统U盘就只做好了 安装系统我们将U盘插入电脑,开机,

  9. 华为OD机试真题 C++ 实现【带传送阵的矩阵游离】【2023 Q2 | 200分】 - 2

            所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。

  10. ruby-on-rails - OSX 10.7.5 - Ruby on Rails LoadError : Could not open library 'sodium' : dlopen(sodium, 5) - 2

    输入rakedb:create后我得到:LoadError:Couldnotopenlibrary'sodium':dlopen(sodium,5):imagenotfound.Couldnotopenlibrary'libsodium.dylib':dlopen(libsodium.dylib,5):imagenotfound这里还有一些输出。/Users/Mao/.rvm/gems/ruby-2.0.0-p451/gems/ffi-1.9.3/lib/ffi/library.rb:133:in`blockinffi_lib'/Users/Mao/.rvm/gems/ruby-2.0

随机推荐