python之数据分析Pandas-3

python之数据分析Pandas-3

一:pandas简介

1,pandas 是基于NumPy 的一种工具,为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

2,Pandas 是python的一个数据分析包,Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。

3,Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

二:数据结构

**Series:**一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。

DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。

**Panel :**三维的数组,可以理解为DataFrame的容器。

pandas为python的库,所以python的所有数据类型在pandas都能使用,另外包括pandas定义2种数据类型:Series:DataFrame

三:pandas与numpy关系

数据结构:

*numpy:*核心数据结构是ndarray,支持任意维数的数组,但要求单个数组内所有数据是同质的,即类型必须相同

*pandas:*核心数据结构是series和dataframe,仅支持一维和二维数据,但数据内部可以是异构数据,仅要求同列数据类型

功能定位:

umpy虽然也支持字符串等其他数据类型,但仍然主要是用于数值计算,尤其是内部集成了大量矩阵计算模块

pandas主要用于数据处理与分析,支持包括数据读写、数值计算、数据处理、数据分析和数据可视化全套流程操作

四:series

series:
带标签的一维数组,所以还可以看做是类字典结构:标签是key,取值是value;
ataframe则可以看做是嵌套字典结构,其中列名是key,每一列的series是value

注意:这里强调series和dataframe是一个类字典结构而非真正意义上的字典,原因在于series中允许标签名重复、dataframe中则允许列名和标签名均有重复,而这是一个真正字典所不允许的。

1> 功能 Series简介

下面我们直接用演示讲series功能

1. 新建series

import pandas as pd
list_a = ['a','b','c','d','e']
data_s = pd.Series(list_a)
print(data_s)
................................................
0    a
1    b
2    c
3    d
4    e
................
自动添加索引0-4
import pandas as pd
list_a = ['a','b','c','d','e']
data_s = pd.Series(list_a)
index_a = ['1','2','3','4','5']
headers = '字母'
data_s = pd.Series(list_a)
data_s2 = pd.Series(list_a,index=index_a)
print(data_s2)
................................
1    a
2    b
3    c
4    d
5    e
..............................
index =[]自定义索引
data_s3 = pd.Series(list_a,index=index_a,name=headers)
print(data_s3)
data_s3.to_csv(r'I:\appuim\LOG_cat\1.csv')
...................................................
1    a
2    b
3    c
4    d
5    e
Name: 字母, dtype: object

...................................
csv保存内容为:
name命名为列名

在这里插入图片描述

效果等同

dict_a = {
   1:'a',2:'b',3:'c'}
data_s = pd.Series(dict_a,name = '字母')
print(data_s)
data_s.to_csv(r'I:\appuim\LOG_cat\1.csv')
.................................
通过series中字典创建
1,由此可见字典的key为行的索引,value 为cell值,而列名是需要重新命名
index_a = ['1','2','3','4','5']
headers = '字母'
dict_a = {
   'a':1,'b':2,'c':3,'d':4,'e':5}
list_a = ['a','b','c','d','e']
data_s = pd.DataFrame(dict_a,index=index_a)
print(data_s)
.............................................
a  b  c  d  e
1  1  2  3  4  5
2  1  2  3  4  5
3  1  2  3  4  5
4  1  2  3  4  5
5  1  2  3  4  5
..............................
可直接常见字典后dataframe保存数据
在Dataframe中key值为列名,value为cell值,

2. numpy创建

python
import pandas as pd
import numpy as np
s = pd.Series(np.random.randint(1,5,size=(4,)),index=['a','b','c','d'])
print(s)
...........................................

a    1
b    4
c    4
d    1
.......................................................
np.andom.randint 随机区间上线、下线,长度
他是前闭后开区间,区别于random的前闭后闭区间

2> Series的索引和切片

引分为隐式索引和显示索引,因此不同的方式操作起来也不一样。
显示通过设定索引获取参数,即区分于隐式索引

1. 隐式索引的操作

import pandas as pd
import numpy as np
lst1 = [1,3,5,6,10,23]
s = pd.Series(lst1,name ='number')
s.to_csv(r'I:\appuim\LOG_cat\1.csv')
print(s[0:4])
print(s[[0,4]])
print(s.iloc[0:4])
print(s.iloc[[0,4]])
..................................................
0    1
1    3
2    5
3    6
Name: number, dtype: int64
0     1
4    10
Name: number, dtype: int64
...................................................
因为本身与列表类似,s.iloc 与s[] 效果相同

2. Series显式索引的操作

import pandas as pd
import numpy as np
lst1 = ['A','B','C','D']
lit2 =['a','b','c','d']
s = pd.Series(lst1,index =lit2,name= '英文')
s.to_csv(r'I:\appuim\LOG_cat\1.csv')
print(s['a':'c'])
print(s[['a','d']])
print(s.loc['a':'c'])
print(s.loc[['a','d']])
...........................................................
a    A
b    B
c    C
Name: 英文, dtype: object
a    A
d    D
Name: 英文, dtype: object
.............................................................
显示索引s.loc 等同于s[]
以上分别式单行,多行,切片索引

总结

Series的索引和切片只针对行而言
loc是对于显式索引的相关操作(对于标签的处理),iloc是针对隐式索引的相关操作(对于整数的处理)。
我们发现其实s[0:2] 与 s.iloc[0:2]没有太大差别(显式索引也是一样),这并不说明iloc就没有用,个人觉得它更有意义的是在DataFrame当中使用,后面会讲到。

3> Series的基本操作

1. 显示Series部分数据内容

lst1 = ['A','B','C','D']
lit2 =['a','b','c','d']
s = pd.Series(lst1,index =lit2,name= '英文')
print(s.head(1))
print(s.tail(2))
.........................................................
a    A
Name: 英文, dtype: object
c    C
d    D
Name: 英文, dtype: object
.........................................................
s.head(n) 该函数代表的意思是显示前多少行,可以指定显示的行数,不写n默认是前5行
s.tail(n) 该函数代表的意思是显示后多少行,可以指定显示的行数,不写n默认是前5

2. Series去重操作

lst1 = ['A','B','C','D','C']
lit2 =['a','b','c','d','e']
s = pd.Series(lst1,index =lit2,name= '英文')
s.unique()
print(s)
s2 =s.unique()
print(s2)
.................................
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

45度看我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值