首页 > 其他分享 >Pandas 01 快速入门

Pandas 01 快速入门

时间:2023-05-22 11:03:19浏览次数:54  
标签:Q1 01 入门 df Series 索引 team Pandas Q4


Pandas

官方文档

Pandas(/ˈpændəz/)是一个开源的、BSD 许可的库,为 Python 编程语言提供高性能、易于使用的数据结构和数据分析工具。

Pandas 适合处理一个规正的二维数据,即有 N 行 N 列,类似于 SQL 执行后产出的,或者 无合并单元格 Excel 表格。

一、快速入门

1、读取数据

import pandas as pd 

df = pd.read_excel('https://www.gairuo.com/file/data/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在启动目录下
# 如果是 csv 的话使用 pd.read_csv() 

df.shape # (100, 6) 查看行数和列数
df.info() # 显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等
df.describe() # 计算出各数字字段的总数、平均数、标准差、最大最小值和四分位数
df.dtypes # 查看各字段类型
df.axes # 显示数据行和列名
df.columns # 列名

注:df. 即输入变量名并输入 . 后按 tab 键会提示此对象的所有方法和属性,这是 IPython 的功能,这是一个通用的功能,所有的对象和变量都支持。

2、建立索引

业务索引 name 列:

df.set_index('name', inplace=True) # 建立索引并生效

其中可选参数 inplace=True 会将指定好索引的数据再赋值给 df 使索引生效。

3、数据选取

df.head(n) # 查看 DataFrame 对象的前 n 行
df.tail(n) # 后 n 行
df.sample(n) # 随机查看 n 个样本
df.index # 查看索引内容

1)选择列

返回 Series 类型数据。

# 查看指定列
df['Q1']
df.Q1 # 这里返回的是一个 Series 类型数据
# 选择多列
df[['team', 'Q1']] # 只看这两列,注意括号
df.loc[:, ['team', 'Q1']] # 和上边效果一样

df.loc[x, y] 是一个数据选择函数,其中 x 代表行,y 代表列,行和列都支持条件表达式,也支持类似列表那样的切片(如果要用自然索引需要用 df.iloc[])。

2)选择行

df[df.index == 'Liver'] # 指定索引
# 用自然索引选择,类似列表的切片
df[0:3] # 取前三行,
df[0:10:2] # 前10个,每两个取一个
df.iloc[:10,:] # 前10个

# 指定行列
df.loc['Ben', 'Q1':'Q4'] # 只看 Ben 的四个季度成绩
df.loc['Eorge':'Alexander', 'team':'Q4'] # 指定行区间

3)条件选择

# 单一条件
df[df.Q1 > 90] 
df[df.team == 'C'] 
df[df.index == 'Oscar'] 

# 组合条件
df[(df['Q1'] > 90) & (df['team'] == 'C')] # and
df[df['team'] == 'C'].loc[df.Q1>90]

4、排序

df.sort_values(by='Q1') # 返回 按 Q1 列数据升序排列 
df.sort_values(by='Q1', ascending=False) # 降序
df.sort_values(['team', 'Q1'], ascending=[True, False])

5、分组聚合

df.groupby('team').sum() # 按团队分组对应列相加
df.groupby('team').mean() # 按团队分组对应列求平均
# 不同列不同的计算方法
df.groupby('team').agg({'Q1': sum,  
                        'Q2': 'count', 
                        'Q3':'mean', # 平均
                        'Q4': max})

6、数据转换

可以对数据表进行转置,以 A-Q1 和 E-Q4 为两点组成的折线为轴对数据进行旋转:

df.groupby('team').sum().T
df.groupby('team').sum().stack()
df.groupby('team').sum().unstack()

7、增加列

df['one'] = 1 # 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 
# 指定一些列相加增加一个新列
df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)
df['total'] = df.sum(axis=1) # 可以把所有为数字的列相加
df['avg'] = df.total/4 # 增加平均成绩列

8、简单分析

df.mean() # 返回所有列的均值
df.mean(1) # 返回所有行的均值,下同
df.corr() # 返回列与列之间的相关系数
df.count() # 返回每一列中的非空值的个数
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.median() # 返回每一列的中位数
df.std() # 返回每一列的标准差
df.var() # 方差
s.mode() # 众数

9、画图

Pandas 利用 plot() 调用 matplotlib 快速绘制出数据可视化图形。注意,第一次使用 plot() 时可能需要执行两下才能显示图形。

df['Q1'].plot() # Q1 成绩的折线分布
df.loc['Ben','Q1':'Q4'].plot() # ben 四个季度的成绩变化
df.loc[ 'Ben','Q1':'Q4'].plot.bar() # 柱状图
df.loc[ 'Ben','Q1':'Q4'].plot.barh() # 横向柱状图
df.groupby('team').sum().T.plot() # 各 Team 四个季度总成绩趋势
df.groupby('team').count().Q1.plot.pie() # 各组人数对比

10、输出

df.to_excel('team-done.xlsx') # 导出 excel
df.to_csv('team-done.csv') # 导出 csv

二、Pandas 数据结构

维数

名称

描述

1

Series

带标签的一维同构数组

2

DataFrame

带标签的,大小可变的,二维异构表格

注:三维的面板(Panel)结构已经不再支持。

Series (系列、数列、序列)是一个带有标签的一维数组。
以下各国的 GDP 就是一个典型的 Series,国家是标签、索引,起到解释数据的作用。

import pandas as pd

pd.Series([14.22,21.34,5.18],index=['中国','美国','日本'])

中国  14.22
美国  21.34
日本  5.18
dtype: float64

带有同样标签和索引的 Series 可以组成一个 DataFrame,比如我们再增加一个国家的人口。

DataFrame 是 Pandas 定义的一个二维数据结构,DataFrame 是 Series 的容器。

  • 横向的称作行(row),一条数据
  • 纵向的称作列(column),一个字段,是一条数据的某个值
  • 第一行是表头,或者可叫字段名
  • 第一列是索引(index),就是这行数据所描述的主体,也是这条数据的关键
  • 表头和索引在一些场景下也有称列索引和行索引的
  • 行索引和列索引可能会出外多层索引的情况

Numpy 是一个高效的科学计算库,Panas 的这些数据结构是构建在 Numpy 数组之上,所以处理速度非常快。

Series 和 DataFrame 里边的值都是可变的,它们都可以增加行,并排序,Series 只有一列不能再增加,DataFrame 可以增加列。

我们在处理数据时,不要对原始数据及转入进来的初始数据(如 DataFrame 一般变量为 df)进行改动,而是复制生成新的对象,或者使用方法链。


标签:Q1,01,入门,df,Series,索引,team,Pandas,Q4
From: https://blog.51cto.com/u_1439909/6321637

相关文章

  • IntelliJ IDEA上手这一篇就够了,从入门到上瘾
    前言每次换电脑,最最最头疼的事情莫过于安装各种软件和搭建开发环境。这算是不想换电脑的一个原因吧(最主要还是穷)。除非是电脑坏了开不了机或者点一下卡一下,真不想换电脑。每次换电脑都得折腾好久。趁着这次换电脑了,顺便整理下IDEA安装使用及配置。官网提供的详细使用文档,英......
  • Real-Time Water Waves With Wave Particles - cem yuksel - 2010
    摘要:Thisdissertationdescribesthewaveparticlestechniqueforsimulatingwatersurfacewavesandtwowayfluid-objectinteractionsforreal-timeapplications,suchasvideogames.本文描述了用于模拟水面波的波粒子技术和用于视频游戏等实时应用的双向流体-物体......
  • xxxxhttps://blog.csdn.net/holecloud/article/details/80139297
    #include"stdafx.h"#include<opencv2\imgproc\imgproc.hpp>#include<windows.h>#include<opencv2/opencv.hpp>#include<cmath>#include<iostream>//#include"DetectPackage.h"#include<cmath>usin......
  • React 入门实例教程
    现在最热门的前端框架,毫无疑问是 React 。上周,基于React的 ReactNative 发布,结果一天之内,就获得了5000颗星,受瞩目程度可见一斑。React起源于Facebook的内部项目,因为该公司对市场上所有 JavaScriptMVC框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出......
  • clayui界面库系列教程之五:仿QQ2010风格的登录下拉框
    预览图如下:                        例子工程下载        这次的例子工程是CLAYUIEXP2,与以前的苹果风格按钮是一个工程,所以在本教程里,关于初始化之类的就不详细解说了,有疑问的请查看本博客内的其他教程        好的,教程开始了。 ......
  • 2023上半年软考系统分析师科目一整理-01
    (2023上半年软考系统分析师科目一整理-01)1.面向对象面向对象分析中,对象是类的实例。对象的构成成分包含了(A),属性和方法(或操作)。A.标识 B.消息 C.规则 D.结构对象的三要素为:属性(数据)、方法(操作)、对象ID(标识)。面向对象分析中,类与类之间的“IS-A”关系的是一种(C),......
  • Flutter入门资料推荐
    前言群里很多入门小白不知道如何入门Flutter,水一篇文章简单介绍下本人学习过程中一些参考资料,方便Flutter小白少走弯路。非权威,推荐只针对本人经验来的说,大佬们不喜勿喷!资料列表书籍类第二版序|《Flutter实战·第二版》dio作者写滴,资料还是有保证,介绍比较全面,Flutter内容基......
  • 杂项·入门
    Misc杂项MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相关的大数据等。此处我详细描述图片隐写,文件修复,音频隐写和压缩包破解。图片隐写图片隐写又分为附加式的图片隐写、基于文件结构的图片隐写,基于LSB原理的图片隐写、基于DCT域的JP......
  • []复习]cityengine2019/2022导入shp数据生成福田区建筑群
    时间是一把杀猪刀和人工智能比起来我太弱了.很无助.无法给自己升级系统.cityengine2019目前载入那种地区线上数据是行不通了,2022可以整一个邮箱试用一个月.https://www.esri.com/zh-cn/arcgis/products/arcgis-cityengine/trial/professionals我整了一个万能无线邮箱,无法注册,......
  • NOIP2018普及组试题题解
    1.标题统计原题:https://www.luogu.com.cn/problem/P5015#include<bits/stdc++.h>#definelllonglongusingnamespacestd;strings;intans=0;intmain(){ getline(cin,s);intlen=s.length(); for(inti=0;i<len;i++){ if(s[i]>='0'&&......