一、为什么学习pandas

  • numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?

    • numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

二、什么是pandas?

  • 首先先来认识pandas中的两个常用的类

    • Series
    • DataFrame

1.Series的创建

  • 由列表或numpy数组创建
  • 由字典创建
#series只能创建一维数组
import numpy as np
import pandas as pd
from pandas import Series,DataFrame#使用列表创建数组
s=Series(data=[1,2,3,4,5])
s

#numpy数组创建
s1=Series(data=np.random.randint(1,100,size=(2,)))
s1

Series(data=[1,2,3],index=['a','b','c'])#index是用来指定显示索引,显示索引不会覆盖隐示索引

1.2.Series的索引和切片

s = Series(data=[1,2,3,4,5],index=['a','b','c','d','e'])
s

#索引操作
s = Series(data=[1,2,3,4,5],index=['a','b','c','d','e'])
print(s[0])#查找索引为0的元素
print(s['a'])#查找索引为0的元素
print(s.a)
print(s[[1,2]])#查找索引为0的元素

#切片
s[0:3]
s['a':'c']

1.3.Series的常用属性

  • shape
  • size
  • index
  • values
print(s.shape)
print(s.size)
print(s.index)
print(s.values)

1.4.Series的常用方法

  • head(),tail()
  • unique()
  • isnull(),notnull()
  • add() sub() mul() div()
s.head(2)#显示前n个元素
s.tail(2)#后n个元素

s = Series(data=[1,1,2,2,3,4,5])
s.unique()#去重

s.nunique() #返回去重之后元素的个数

s.isnull() #isnull使用来检测元素是否为空

s.notnull()#用来检测元素是否为非空

#add()为例
a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
a.add(b, fill_value=0)
print(a)
print(b)
print(a.add(b,fill_value=0))

1.5.Series的算术运算

  • 法则:索引一致的元素进行算数运算否则补空
s1 = Series(data=[1,2,3],index=['a','b','c'])
s2 = Series(data=[1,2,3],index=['a','d','c'])
s = s1+s2
s

s.isnull()

s.notnull()

2.DataFrame

  • DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values

2.1DataFrame的创建

  • ndarray创建
  • 字典创建
#ndarray创建
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
df=DataFrame(np.array([[1,2,33],[6,4,8]]))
df#或者DataFrame(data=[[1,2,33],[6,4,8]])

#使用元祖创建
dic = {'name':['tom','jay','salay'],'salary':[10000,2000,15000]
}
DataFrame(dic)

df =DataFrame(data=np.random.randint(0,100,size=(3,2)),index=['a','b','c'],columns=['A','B'])
df

2.2DataFrame的属性

  • values、columns、index、shape
print(df.values)
print(df.columns)
print(df.index)
print(df.shape)

练习1:

根据以下考试成绩表,创建一个DataFrame,命名为df:

张三  李四
语文 150  0
数学 150  0
英语 150  0
理综 300  0

代码

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
df=DataFrame(data=[[150,0],[150,0],[150,0],[300,0]],columns=['张三','李四'],index=['语文','数学','英语','理综'])
df

2.3DataFrame索引操作(*重点)

  • 对行进行索引
  • 队列进行索引
  • 对元素进行索引
df = DataFrame(data=np.random.randint(0,100,size=(5,4)),columns=['a','b','c','d'],index=['A','B','C','D','E'])
df

#索引取列
df['a']#显示索引取列
df.iloc[:,0] #隐式索引取列
df.a

#取行
df.iloc[0] #隐式索引取行
df.loc['A'] #显示索引取行

  • iloc:

    • 通过隐式索引取行
  • loc:
    • 通过显示索引取行
#取元素
df.loc['B','b']
df.iloc[1,1]
df.iloc[[0,1],2]

2.4DataFrame的切片操作

  • 对行进行切片
  • 对列进行切片
#切行
df[0:2]

#切列
df.iloc[:,0:2]

总结:

  • df索引和切片操作

    • 索引:

      • df[col]:取列
      • df.loc[index]:取行
      • df.iloc[index,col]:取元素
    • 切片:
      • df[index1:index3]:切行
      • df.iloc[:,col1:col3]:切列

2.5DataFrame的运算

  • 同Series

练习2:

  1. 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
  2. 假设张三期中考试数学被发现作弊,要记为0分,如何实现?
  3. 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
  4. 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
#先建表,期中ddd和期末ddd2两张表
import pandas
from pandas import Series,DataFrame
dic={'张三':[150,150,150,300],'李四':[0,0,0,0],'王五':[120,97,114,130]
}
df=DataFrame(data=dic,index=['语文','数学','英语','理综'])
ddd=df
ddd2=df
print(ddd)
print(ddd2)

#1.假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。

#2.假设张三期中考试数学被发现作弊,要记为0分,如何实现?
#先找到ddd中数学-张三成绩,然后再赋值为0
ddd.loc['数学','张三']=0
ddd.loc['数学','张三']

#3.李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
#找到ddd表中李四的所有成绩(列),然后+100
ddd['李四']+=100
ddd['李四']

#4.来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
ddd+=10
ddd

dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...相关推荐

  1. Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)

    Python读取多个excel文件(删除字段.数据格式转换.dataframe多表合并)并写入ElasticSearch实战(自动创建索引.写入ElasticSearch.探索性数据分析) 目录

  2. dataframe两个表合并_DataFrame踩坑整理(一)

    不得不说,工作中几乎天天跟DataFrame打交道,真的很有总结和记住的必要,话不多说,直接上干货.输入以下语句前别忘记: import pandas as pd import numpy as np ...

  3. dataframe两个表合并_Spark实战第二版(涵盖Spark3.0)第三章 宏伟的角色dataframe

    关注公众号: 登峰大数据 ,阅读Spark实战第二版(完整中文版),系统学习Spark3.0大数据框架! 如果您觉得作者翻译的内容有帮助,请分享给更多人.您的分享,是作者翻译的动力! 本章涵盖了 使用 ...

  4. dataframe两个表合并_Spark DataFrame 不是真正的 DataFrame

    从这篇文章开始,我们专栏开始一个新的读 paper 系列. 今天要介绍的 paper 是 Towards Scalable Dataframe Systems,目前还是预印本.作者 Devin Pet ...

  5. dataframe两个表合并_史上代码最少的工作表拆分,仅需5行,不可思议

    工作中,很多小伙伴都会遇到一些需求,将一份Excel文档按照部门进行拆分,每个部门是一个单独的工作表,或者每个部门整理的工作表汇总为一份总的工作表.读者需要注意的是,多个工作表的拆分与合并,始终在一个 ...

  6. dataframe两个表合并_DAXSQLPython实现报表项目存在串行的财务报表合并

       点击"数字化审计",可以关注哦! 开篇啰嗦话 在前文"Dax实战-多年财务报表项目存在串行的合并"中,我为你介绍了多年财务报表合并过程中问题的起因和解决串 ...

  7. dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并

    问题: 该文件夹下的三个文件理论上列名完全一致,但是在用rbind合并时却提示上述错误,(只能理解为列名确实是不一致导致的问题)解决如下: (1)首先,rbind和cbind()也适用于datafra ...

  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主

    利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...

  9. oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...

    sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...

最新文章

  1. can是什么时候处于显性_can总线怎么传输数据格式过程分析
  2. C语言实现单链表的逆置
  3. Hyperledger Fabric 核心模块(5)peerer共识
  4. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!
  5. 魏代汉,晋代魏,背后是士族与寒族的博弈,也是士族门阀的形成时期
  6. c++学习笔记之类和对象的进阶
  7. 【转载】jvm内存回收
  8. 中国银联深夜道歉 称将进一步优化赔偿机制
  9. 用mac的chrome浏览器调试Android手机的网页
  10. DS90C385MTD一个芯片搞定LVDS 大分辨率LCD
  11. 使用Cscope阅读Linux源码
  12. obendclean php命令,ob_end_clean
  13. 90年经典坦克大战(cocos2d-x)
  14. 饥荒联机版专属服务器建立和后续mod更新
  15. OPA1612AIDR IC AUDIO 2 CIRCUIT 8SOIC
  16. 《哈利·波特:霍格沃茨之谜》推出二月支线任务“天界舞会”,带来新的选择、挑战与服装
  17. centos android模拟器,centos 7 安装android 模拟器genymotion
  18. java获取当前时间戳
  19. 女大学生成中介销冠:卖出上亿豪宅
  20. crm登录功能实现记住我

热门文章

  1. swoole 定时器
  2. Qt的Oracle数据库QOCI驱动问题
  3. Android TextView文本处理库推荐
  4. java单例设计模式
  5. 转载:【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis
  6. PostgreSQL处理xml数据初步
  7. 黄金——家家都应藏有的投资品(转载自新浪)
  8. 如何成为领袖? 学习任正非小沃森郭士纳
  9. C++语言之继承类型
  10. 研究发现,脸谱网和谷歌在流媒体上有广告跟踪器