DataFrame入门

文章目录

    • 1. 数据集合加载
    • 2. 使用常用的属性/方法查看数据情况
      • type()
      • shape
      • columns
      • dtypes
      • info()
    • 3. 查看部分数据
      • 获取一列数据
      • 获取多列数据
      • 按行加载数据
      • 同时取出行列数据
      • 切片语法
    • 4. 简单数据分析
    • 5. 数据可视化
    • 总结


1. 数据集合加载

pd.read_csv()方法不仅可以加载CSV文件,还可以加载TSV文件,不过需要通过sep参数指明数据分割符号。

df = pd.read_csv('data/gapminder.tsv',sep='\t')
print(df)
'''
代码输出:country continent  year  lifeExp       pop   gdpPercap
0     Afghanistan      Asia  1952   28.801   8425333  779.445314
1     Afghanistan      Asia  1957   30.332   9240934  820.853030
2     Afghanistan      Asia  1962   31.997  10267083  853.100710
3     Afghanistan      Asia  1967   34.020  11537966  836.197138
4     Afghanistan      Asia  1972   36.088  13079460  739.981106
...           ...       ...   ...      ...       ...         ...
1699     Zimbabwe    Africa  1987   62.351   9216418  706.157306
1700     Zimbabwe    Africa  1992   60.377  10704340  693.420786
1701     Zimbabwe    Africa  1997   46.809  11404948  792.449960
1702     Zimbabwe    Africa  2002   39.989  11926563  672.038623
1703     Zimbabwe    Africa  2007   43.487  12311143  469.709298[1704 rows x 6 columns]
'''

2. 使用常用的属性/方法查看数据情况

type()

print(type(df))
'''
代码输出:
pandas.core.frame.DataFrame
'''

shape

print(df.shape)
'''
代码输出:
(1704,6)
'''

columns

print(df.columns)
'''
代码输出:
Index(['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap'], dtype='object')
'''

dtypes

print(df.dtypes)
'''
代码输出:
country       object
continent     object
year           int64
lifeExp      float64
pop            int64
gdpPercap    float64
dtype: object
'''

info()

print(df.info())
'''
代码输出:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1704 entries, 0 to 1703
Data columns (total 6 columns):#   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  0   country    1704 non-null   object 1   continent  1704 non-null   object 2   year       1704 non-null   int64  3   lifeExp    1704 non-null   float644   pop        1704 non-null   int64  5   gdpPercap  1704 non-null   float64
dtypes: float64(2), int64(2), object(2)
memory usage: 80.0+ KB
'''

3. 查看部分数据

获取数据最关键的两个属性:

  • df.loc[行名,列名]
  • df.iloc[行号,列号]

获取一列数据

DataFrame可以看作一个Series的列表,传入Series的名称,就可以获取对应的一列数据。

col = col = df['country']
print(col)
'''
代码输出:
0       Afghanistan
1       Afghanistan
2       Afghanistan
3       Afghanistan
4       Afghanistan...     
1699       Zimbabwe
1700       Zimbabwe
1701       Zimbabwe
1702       Zimbabwe
1703       Zimbabwe
Name: country, Length: 1704, dtype: object
'''

获取多列数据

获取多列数据,需要传入一个包含列名的列表。

subset = df[['country','continent','year']]
print(subset)
'''
代码输出:country continent  year
0     Afghanistan      Asia  1952
1     Afghanistan      Asia  1957
2     Afghanistan      Asia  1962
3     Afghanistan      Asia  1967
4     Afghanistan      Asia  1972
...           ...       ...   ...
1699     Zimbabwe    Africa  1987
1700     Zimbabwe    Africa  1992
1701     Zimbabwe    Africa  1997
1702     Zimbabwe    Africa  2002
1703     Zimbabwe    Africa  2007[1704 rows x 3 columns]
'''

按行加载数据

DataFrame默认的行索引是数字索引,也就是从0开始的数字序列,这种情况下行索引等于行编号。

以下代码获取df中的第1行数据(编号为0,行索引也是0)。

print(df.loc[0])
'''
代码输出:
country      Afghanistan
continent           Asia
year                1952
lifeExp           28.801
pop              8425333
gdpPercap     779.445314
Name: 0, dtype: object
'''

使用iloc也可以达到同样的效果:

print(df.iloc[0])
'''
代码输出:
country      Afghanistan
continent           Asia
year                1952
lifeExp           28.801
pop              8425333
gdpPercap     779.445314
Name: 0, dtype: object
'''

如果在加载数据的时候 ,手动指明行索引,那么行索引和数字编号就会有差异。

以下代码获取数据集中的第一行,行编号为0,行名(行索引)为Avatar(阿凡达)。

movie = pd.read_csv('data/movie.csv',index_col='movie_title')
movie.loc['Avatar'] # 这里使用行索引
'''
代码输出:
color                                                                    Color
director_name                                                    James Cameron
num_critic_for_reviews                                                   723.0
duration                                                                 178.0
director_facebook_likes                                                    0.0
actor_3_facebook_likes                                                   855.0
actor_2_name                                                  Joel David Moore
... ...
country                                                                    USA
content_rating                                                           PG-13
budget                                                             237000000.0
title_year                                                              2009.0
actor_2_facebook_likes                                                   936.0
imdb_score                                                                 7.9
aspect_ratio                                                              1.78
movie_facebook_likes                                                     33000
Name: Avatar, dtype: object
'''

使用iloc可以达到同样的效果:

print(movie.iloc[0])
'''
代码输出:
color                                                                    Color
director_name                                                    James Cameron
num_critic_for_reviews                                                   723.0
duration                                                                 178.0
director_facebook_likes                                                    0.0
actor_3_facebook_likes                                                   855.0
actor_2_name                                                  Joel David Moore
... ...
country                                                                    USA
content_rating                                                           PG-13
budget                                                             237000000.0
title_year                                                              2009.0
actor_2_facebook_likes                                                   936.0
imdb_score                                                                 7.9
aspect_ratio                                                              1.78
movie_facebook_likes                                                     33000
Name: Avatar, dtype: object
'''

由于iloc使用行号访问数据,所以可以使用python的列表方式进行访问,例如负数索引:

print(df.iloc[-1])
'''
代码输出:
country        Zimbabwe
continent        Africa
year               2007
lifeExp          43.487
pop            12311143
gdpPercap    469.709298
Name: 1703, dtype: object
'''

同时取出行列数据

df.loc[:,['country','year']]
'''
代码输出:country  year
0     Afghanistan  1952
1     Afghanistan  1957
2     Afghanistan  1962
3     Afghanistan  1967
4     Afghanistan  1972
...           ...   ...
1699     Zimbabwe  1987
1700     Zimbabwe  1992
1701     Zimbabwe  1997
1702     Zimbabwe  2002
1703     Zimbabwe  2007[1704 rows x 2 columns]
'''
df.iloc[:,[0,2]]
'''
代码输出:country  year
0     Afghanistan  1952
1     Afghanistan  1957
2     Afghanistan  1962
3     Afghanistan  1967
4     Afghanistan  1972
...           ...   ...
1699     Zimbabwe  1987
1700     Zimbabwe  1992
1701     Zimbabwe  1997
1702     Zimbabwe  2002
1703     Zimbabwe  2007[1704 rows x 2 columns]
'''

切片语法

获取3、4、5列所有的行数据:

df.iloc[:,3:6]
'''
代码输出:lifeExp       pop   gdpPercap
0      28.801   8425333  779.445314
1      30.332   9240934  820.853030
2      31.997  10267083  853.100710
3      34.020  11537966  836.197138
4      36.088  13079460  739.981106
...       ...       ...         ...
1699   62.351   9216418  706.157306
1700   60.377  10704340  693.420786
1701   46.809  11404948  792.449960
1702   39.989  11926563  672.038623
1703   43.487  12311143  469.709298[1704 rows x 3 columns]
'''

也可以设置切片的步长:

df.iloc[:,0:6:2]
'''
代码输出:country  year       pop
0     Afghanistan  1952   8425333
1     Afghanistan  1957   9240934
2     Afghanistan  1962  10267083
3     Afghanistan  1967  11537966
4     Afghanistan  1972  13079460
...           ...   ...       ...
1699     Zimbabwe  1987   9216418
1700     Zimbabwe  1992  10704340
1701     Zimbabwe  1997  11404948
1702     Zimbabwe  2002  11926563
1703     Zimbabwe  2007  12311143[1704 rows x 3 columns]
'''

4. 简单数据分析

  1. 获取每一年的平均预期寿命
df.groupby('year')['lifeExp'].mean()
'''
代码输出:
year
1952    49.057620
1957    51.507401
1962    53.609249
1967    55.678290
1972    57.647386
1977    59.570157
1982    61.533197
1987    63.212613
1992    64.160338
1997    65.014676
2002    65.694923
2007    67.007423
Name: lifeExp, dtype: float64
'''
  1. 获取每年的平均预期寿命,平均人口,平均GDP
df.groupby('year')[['lifeExp','pop','gdpPercap']].mean()
'''
代码输出:lifeExp           pop     gdpPercap
year                                       
1952  49.057620  1.695040e+07   3725.276046
1957  51.507401  1.876341e+07   4299.408345
1962  53.609249  2.042101e+07   4725.812342
1967  55.678290  2.265830e+07   5483.653047
1972  57.647386  2.518998e+07   6770.082815
1977  59.570157  2.767638e+07   7313.166421
1982  61.533197  3.020730e+07   7518.901673
1987  63.212613  3.303857e+07   7900.920218
1992  64.160338  3.599092e+07   8158.608521
1997  65.014676  3.883947e+07   9090.175363
2002  65.694923  4.145759e+07   9917.848365
2007  67.007423  4.402122e+07  11680.071820
'''
  1. 每年、每大洲的数据平均值
df.groupby(by=['year','continent'])[['lifeExp','pop','gdpPercap']].mean()
'''
代码输出:lifeExp           pop     gdpPercap
year continent                                       
1952 Africa     39.135500  4.570010e+06   1252.572466Americas   53.279840  1.380610e+07   4079.062552Asia       46.314394  4.228356e+07   5195.484004Europe     64.408500  1.393736e+07   5661.057435Oceania    69.255000  5.343003e+06  10298.085650
1957 Africa     41.266346  5.093033e+06   1385.236062Americas   55.960280  1.547816e+07   4616.043733Asia       49.318544  4.735699e+07   5787.732940Europe     66.703067  1.459635e+07   6963.012816Oceania    70.295000  5.970988e+06  11598.522455
... ...
2002 Africa     53.325231  1.603315e+07   2599.385159Americas   72.422040  3.399091e+07   9287.677107Asia       69.233879  1.091455e+08  10174.090397Europe     76.700600  1.927413e+07  21711.732422Oceania    79.740000  1.172741e+07  26938.778040
2007 Africa     54.806038  1.787576e+07   3089.032605Americas   73.608120  3.595485e+07  11003.031625Asia       70.728485  1.155138e+08  12473.026870Europe     77.648600  1.953662e+07  25054.481636Oceania    80.719500  1.227497e+07  29810.188275
'''
  1. 每大洲有多少个国家
df.groupby('continent')['country'].nunique()
'''
代码输出:
continent
Africa      52
Americas    25
Asia        33
Europe      30
Oceania      2
Name: country, dtype: int64
'''

5. 数据可视化

df.groupby('year')['lifeExp'].mean().plot()
# kind = 'bar' 可以画柱状图

在这里插入图片描述

总结

数据分析处理流程:
加载数据 → 数据基本处理 → 数据分析 → 数据可视化 → 得出结论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/95381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识Java 12-3 流

目录 终结操作 将流转换为一个数组&#xff08;toArray&#xff09; 在每个流元素上应用某个终结操作&#xff08;forEach&#xff09; 收集操作&#xff08;collect&#xff09; 组合所有的流元素&#xff08;reduce&#xff09; 匹配&#xff08;*Match&#xff09; 选…

LLM下半场之Agent基础能力概述:Profile、Memory、Plan、Action、Eval学习笔记

一.Agent发展将会是LLM的下半场 目前大家都在讨论LLM&#xff0c;LLM解决的问题是帮助机器像人类一样理解彼此的意图&#xff0c;本质上来讲&#xff0c;LLM更像是一个技术或者工具。但是人类社会发生变革的引线&#xff0c;往往是一个产品或者解决方案&#xff0c;比如电池技…

Linux【网络】数据链路层

Linux【网络】数据链路层 数据链路层以太网帧格式对比理解MAC地址和IP地址ARP协议--地址解析协议ARP工作流程ARP请求ARP应答 其他协议DNS-域名解析协议ICMP--网络层协议NAT技术NAPT 正向代理与反向代理 数据链路层 数据链路层用于两个设备&#xff0c;同一数据链路节点之间的信…

栈和队列的实现

用栈实现队列 1.分析2.代码 1.分析 2.代码 class MyQueue {private Stack<Integer> s1;private Stack<Integer> s2;public MyQueue() {s1 new Stack<>();s2 new Stack<>();}public void push(int x) {s1.push(x);}public int pop() {if(empty()){re…

山西电力市场日前价格预测【2023-10-05】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-05&#xff09;山西电力市场全天平均日前电价为363.87元/MWh。其中&#xff0c;最高日前电价为649.89元/MWh&#xff0c;预计出现在18: 45。最低日前电价为291.58元/MWh&#xff0c;预计…

微信公众号模板消息First,Remark字段不显示,备注字段不见了

今天在开发公众号过程中有个需求发模板消息我设置的如下 成绩单打印通知&#xff01;姓名&#xff1a;{{name.DATA}} 学号&#xff1a;{{stuid.DATA}}状态&#xff1a;{{status.DATA}}时间&#xff1a;{{date.DATA}} 备注&#xff1a;{{remark.DATA}} 然后发完通知发现《…

矩阵的c++实现(2)

上一次我们了解了矩阵的运算和如何使用矩阵解决斐波那契数列&#xff0c;这一次我们多看看例题&#xff0c;了解什么情况下用矩阵比较合适。 先看例题 1.洛谷P1939 【模板】矩阵加速&#xff08;数列&#xff09; 模板题应该很简单。 补&#xff1a;1<n<10^9 10^9肯定…

成都建筑模板批发市场在哪?

成都作为中国西南地区的重要城市&#xff0c;建筑业蓬勃发展&#xff0c;建筑模板作为建筑施工的重要材料之一&#xff0c;在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场&#xff0c;广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

<C++> String

目录 一、标准库中的string类 1. string类 2. string类的常用接口说明 2.1 string类对象的常见构造 2.2 string类对象的容量操作 2.3 string类对象的访问及遍历操作 2.4 string类对象的修改操作 2.5 string类非成员函数 总结 前言 C语言中&#xff0c;字符串是以 \0 结尾的一些…

[软件工具]opencv-svm快速训练助手教程解决opencv C++ SVM模型训练与分类实现任务支持C# python调用

opencv中已经提供了svm算法可以对图像实现多分类&#xff0c;使用svm算法对图像分类的任务多用于场景简单且对时间有要求的场景&#xff0c;因为opencv的svm训练一般只需要很短时间就可以完成训练任务。但是目前网上没有一个工具很好解决训练问题&#xff0c;大部分需要自己编程…

AWS Lambda Golang HelloWorld 快速入门

操作步骤 以下测试基于 WSL2 Ubuntu 22.04 环境 # 下载最新 golang wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz# 解压 tar -C ~/.local/ -xzf go1.21.1.linux-amd64.tar.gz# 配置环境变量 PATH echo export PATH$PATH:~/.local/go/bin >> ~/.bashrc …

密码技术 (6) - 证书

一. 前言 前面介绍的公钥密码和数字签名&#xff0c;都无法解决一个问题&#xff0c;那就是判断自己获取的公钥是否期望的&#xff0c;不能确定公钥是否被中间攻击人掉包。所以&#xff0c;证书的作用是用来证明公钥是否合法的。本文介绍的证书就是解决证书的可靠性的技术。 二…

Python3数据科学包系列(一):数据分析实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 认识下数据科学中数据处理基础包: (1)NumPy 俗话说: 要学会跑需先…

React框架核心原理

一、整体架构 三大核心库与对应的组件 history -> react-router -> react-router-dom react-router 可视为react-router-dom 的核心&#xff0c;里面封装了<Router>&#xff0c;<Route>&#xff0c;<Switch>等核心组件,实现了从路由的改变到组件的更新…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第三周测验

课程1_第3周_测验题 目录&#xff1a;目录 第一题 1.以下哪一项是正确的&#xff1f; A. 【  】 a [ 2 ] ( 12 ) a^{[2](12)} a[2](12)是第12层&#xff0c;第2个训练数据的激活向量。 B. 【  】X是一个矩阵&#xff0c;其中每个列都是一个训练示例。 C. 【  】 a 4 […

【一、灵犀考试系统项目设计、框架搭建】

一、创建数据库 1、打开power designer&#xff0c;新建数据库模型 2、新建数据表&#xff0c;以及关系 【注意】 图片的类型有两种&#xff1a;varbinary 和 image varbinary : 二进制字节流&#xff0c;可以自动控制长度 image : 最大可放2G图片 3、创建数据库&#…

国庆假期作业day2

作业&#xff1a;创建一个双向链表&#xff0c;将26个英文字母通过头插的方式插入到链表中&#xff0c;通过尾删的方式将数据读取出来并删除 #ifndef _TEXT_H #define _TEXT_H #include<myhead.h> typedef int datatype; typedef struct dblist {union {datatype data;/…

后端面经学习自测(二)

文章目录 1、Http1.1和2.0的区别大概是什么&#xff1f;HTTP & HTTPS 2、HTTP&#xff0c;用户后续的操作&#xff0c;服务端如何知道属于同一个用户cookie & session & token手机验证码登录流程SSO单点登录 3、如果服务端是一个集群机器&#xff1f;4、hashmap是线…

[React源码解析] React的设计理念和源码架构 (一)

任务分割异步执行让出执法权 文章目录 1.React的设计理念1.1 Fiber1.2 Scheduler1.3 Lane1.4 代数效应 2.React的源码架构2.1 大概图示2.2 jsx2.3 Fiber双缓存2.4 scheduler2.5 Lane模型2.6 reconciler2.7 renderer2.8 concurrent 3.React源码调试 1.React的设计理念 Fiber: 即…