数据分析 Pandas 简介和它的的数据结构
本文主要讲Pandas 的Series和DataFrame 的相关属性和操作
1、Series的相关属性和操作
# --Series是一种类似于一维数组的对象,只能存放一维数组!由以下两部分组成:
# value:一组数据 ndarray类型
# index:相关数据的索引标签
#
# --Series 的创建:
# (1)由列表或numpy数组创建:默认索引为0到n-1的整数索引,
# (2)还可以通过index的参数指定索引
1.2、Series的索引和切片操作如下:
import pandas as pd
from pandas import Series,DataFrame
# 创建一个Series,index=['a','b','c']为显示索引:增强可读性
s = Series(data=[1,2,3],index=['a','b','c'])
#索引的使用:下面三种方式都可以
print(s.a)
print(s[0])
print(s['a'])
#----Series 的切片
print(s[0:1]) # --- 这种索引切片是不包含1的值的
print(s['a':'b'])
print(s[[0,1]])
print(s[['a','b']])
1.3、Series 的相关函数及其特性
s.head(n) 查看前面n个值
s.tail(n) 分别查看后面n个值
s.unique() ---对Series a元素进行去重----
s = Series([1,1,3,5,7,7,9,45,65])
ns = s.unique() # ns 为 [1,3,5,7,9,45,65]
print(ns)
Series加法运算: 两个Series 数组必须索引相同才能相加成功,不然就会出现缺失数据 NaN 的情况
s1 = Series(data=[1,2,3],index=['a','b','c'])
s2 = Series(data=[1,2,3],index=['a','d','c'])
s = s1 + s2
print(s) # s的结果: a 2.0
# b NaN
# c 6.0
# d NaN
Series的索引可以为True/False:
print(s[[True,False,True,False]]) # --- 发现:如果索引为 False 时,值不显示
s.isnull() # --- 判断s中每个元素是否为NaN ,等于NaN返回True
s.notnull() # --- 判断s中每个元素是否不为NaN ,不等于NaN返回True
#---批量过滤NaN值----------
print(s[s.notnull()]) # s.notnull()返回的 True/False 数组,作为 s[]的索引
----------------------------------------------------------------------------------------------------------
2、DataFrame 的相关属性和操作
---定义:DataFrame 是一个表格,二维的数据结构
---DataFrame == mydql的table
---设计初衷:将Series 的一维数据结构扩展到多维
---DataFrame 既有行索引,还有列索引
行索引:index DataFrame会自动在每一行加上索引
列索引:columns 使用字典创建DataFrame后,columns参数将不可被使用
值:values 同Series 一样 传入的列与字典的键不匹配,则相应的值为NaN
---创建 DataFrame
import numpy as np
df = DataFrame(data = np.random.randint(0,100,size=(3,4)),index=['a','b','c'],columns=['A','B','C','D'])
print(df)
# A B C D
# a 45 63 88 52
# b 74 4 56 35
# c 58 22 14 25
2.2、DataFrame 的属性 :index columns values shape
print('返回所有的值(3行4列)',df.values)
print('返回列索引',df.columns)
print('返回行索引',df.index)
使用 ndarray 创建 DataFrame:创建一个表格用于展现张三李四的java/python 成绩:
data ={
'张三':[120,120,120],
'李四':[22,34,34]
}
df = DataFrame(data= data,index=['语文','英语','数学'])
print(df)
--- 张三 李四
---语文 120 22
---英语 120 34
---数学 120 34
2.3、使用DataFrame 的索引操作
(1)、对列进行索引>>>>默认列索引
print(df['张三'])
#语文 120
#英语 120
#数学 120
#Name: 张三, dtype: int64 print(df[['李四','张三']]) # --- 取两列,index取多列要加“[]”
#李四 张三
#语文 22 120
#英语 34 120
#数学 34 120
(2)、对行进行索引
使用df.loc[]加index进行索引 --隐式索引
使用df.iloc[]加整数进行索引 --显式索引
print('使用df.loc[]加index进行索引',df.loc['语文'])
#使用df.loc[]加index进行索引
#张三 120
#李四 22
Name: 语文, dtype: int64
print('使用df.loc[]取多行',df.loc[['语文','英语']]) # --- 取两行,index取多行要加“[]”
#使用df.loc[]取多行
#张三 李四
#语文 120 22
#英语 120 34
print('使用df.iloc[]加整数进行索引',df.iloc[0])
#使用df.iloc[]加整数进行索引
#张三 120
#李四 22
Name: 语文, dtype: int64
print('使用df.iloc[]取多行',df.iloc[[0,1]]) # --- 取两行,index取多行要加“[]”
#使用df.iloc[]取多行
# 张三 李四
#语文 120 22
#英语 120 34
(3)、对元素进行索引
默认df['张三']第一个索引为列索引,第二个为行索引
loc[] 第一个为行索引,第二个为列索引
print('对元素进行索引',df['张三']['语文'])
#对元素进行索引 120
print('使用df.loc[]对元素索引',df.loc['英语']['张三'])
#使用df.loc[]对元素索引 120
print('同上写法',df.loc['英语','张三'])
#同上写法 120
(4)、取多个元素
“,”左边为行,右边为列
print('使用df.loc[]取多个元素',df.loc[['英语','语文'],'张三'])
#使用df.loc[]取多个元素
#英语 120
#语文 120
#Name: 张三, dtype: int64
2.4、DataFrame 的切片操作
行切片: df[0:2]切片默认取得是行
print(df[0:2])
# 张三 李四
#语文 120 22
#英语 120 34
列切片 iloc : “,”左边为行,右边为列
print(df.iloc[:,0:1])
# 张三
# 语文 120
# 英语 120
# 数学 120
2.5、DataFrame 的运算操作
DataFrame 的运算和Series 一样:
在运算中自动对齐索引相同的数据
如果索引不对应就补NaN
重要:
使用python操作符:以行为单位操作(参数必须是行),对所有行都有效。
使用pandas操作函数:
axis = 0 以列为单位操作(参数必须是列),对所有列都有效
axis = 1 以行为单位操作(参数必须是行),对所有行都有效
【注意】fill_value在df和series之间运算时,不能使用
练习:
1、假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
2、假设张三期中考试数学被发现作弊,要记为0分,如何实现?
3、李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
4、后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
df1 = DataFrame(data=np.random.randint(0,100,size=(5,3)), index=list("ABCDE"), columns=["python","java","php"])
df2 = DataFrame(data=np.random.randint(0,100,size=(5,3)), index=list("ABCDE"), columns=["python","java","php"])
display(df1, df2)
1.(df1 + df2)/2
2.df1.loc["B","java"] = 0
3.df1.loc["C"] += 100
4.df1 += 10
数据分析 Pandas 简介和它的的数据结构的更多相关文章
- Python数据分析Pandas库方法简介
Pandas 入门 Pandas简介 背景:pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观.它旨在成为在Python中进行实际, ...
- python 数据分析--pandas
接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利用pandas的DataFrames进行统计分析 ...
- 利用Python进行数据分析——pandas入门
利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 ...
- python库pandas简介
pandas是基于numpy的数据分析模块,提供了大量标准模型和高效操作大型数据集所需要的工具. pandas主要提供了3种数据结构:1.Series,带标签的一维数组:2.DataFrame,带标签 ...
- 利用Python进行数据分析-Pandas(第一部分)
利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...
- python之pandas简介
一. Pandas简介 1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和 ...
- Pandas 简介
Pandas 简介 pandas 是 python 内基于 NumPy 的一种工具,主要目的是为了解决数据分析任务.Pandas 包含了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具 ...
- Python数据分析--Pandas知识点(三)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...
- Python数据分析--Pandas知识点(二)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...
随机推荐
- CD租赁售卖系统javaweb系统展示SSM框架
一.功能要点 1.管理员登录 2.用户注册登录 3.用户权限,可以查看可借或可买cd,并实现对cd的买租 4.管理员可以添加cd, 5.cd的类型,价格由管理员设置 二.运行环境 数据库mysql: ...
- css进阶 00-准备
前言 css 进阶的主要内容如下. #1.css 非布局样式 html 元素的分类和特性 css 选择器 css 常见属性(非布局样式) #2.css 布局相关 css 布局属性和组合解析 常见布局方 ...
- 用DirectX 11绘制一个Cube
之前一篇文章讲了如何初始化DirectX 11,现在在此基础上绘制一个Cube,总体可概括为以下几个步骤: 定义Cube顶点数据结构 创建Vertex Buffer和Index Buffer 编写应用 ...
- metinfo小于v6.2.0版本通杀SQL盲注漏洞分析
0x01 此漏洞是由于未将decode解码后的数据过滤,而直接带入SQL语句中,从而导致SQL盲注漏洞. 0x02 漏洞分析:此处复现为metinfo6.1.3版本,漏洞最初产生为:/app/syst ...
- JAVA基础--cmd命令
常用cmd命令行,很简单 md(make directory):创建文件夹 如:md test1: rd(remove directory):删除空文件夹 如:rd test1:若文件夹包含其他文件, ...
- 使用Canvas绘制分享海报
这几天接到一个需求,需要将一个邀请链接转换为一个带有二维码并且能够分享出去的海报图,网上找了很多的方法,也踩了不少的坑,希望大家遇到类似的需求能够少走弯路.. 具体效果图如下: 效果图 首先我采用了 ...
- python列表(九)元组
元组 元组是不可变序列,元组一旦创建,用任何方法都不可以修改其元素. 元组的偶有元素是放在一对圆括号"()"中 1.元组创建与删除 使用"="讲一个元组赋值给变 ...
- Java Int类型与字符,汉字之间的转换
/** * java 中的流主要是分为字节流和字符流 * 再一个角度分析的话可以分为输入流和输出流 * 输入和输出是一个相对的概念 相对的分别是jvm虚拟机的内存大小 * 从另一个角度讲Java或者用 ...
- Zookeeper什么,它可以做什么?看了这篇就懂了
前言 什么是ZooKeeper,你真的了解它吗.我们一起来看看吧~ 什么是 ZooKeeper ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供 ...
- SpringBoot项目 @Value("${}") 引入的配置文件的变量不生效 , 需要重启服务才生效解决方案
最近在开发项目的时候遇到的问题,有的变量需要能动态修改,于是决定把该常量放在配置文件中,以后修改配置文件就行了,但是在修改了配置文件的数据之后获取的还是之前的数据,需要重启服务才生效,怎么决解这个问题 ...