python:Pandas的数据结构:Series,DataFrame

本篇文章主要讲一讲python的pandas库的一些使用(也算自己学习当中的整理):
数据分析的搭配环境,大家可以去参照安装下载好:https://blog.csdn.net/m0_53088614/article/details/110948964

1.Pandas提供的数据结构和函数的设计,将使表格数据的工作快速、简单、更易懂。所以利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。
常见的数据存储形式有Excel和数据库这两种,不管是Excel还是数据库他们存储数据的方式都是以表格样式进行存储,有行有列,并且每一行和每一列都有自己的索引

例如:name,age等这些就是列索引,可以方便我们获取数据。很不巧的是我们Pandas的DataFrame的结构就和他们相同,Series的结构和表中的行的结构也相同
。上代码演示:

# 导入pandas模块
import pandas as pd
#通过Series存储每个英雄的基本信息
#创建Series
s1 = pd.Series([1,'盖伦','18','150.0','男'])
s2 = pd.Series([2,'乐芙兰','19','160.0','女'])
s3 = pd.Series([3,'亚索','20','170.0','男'])
s4 = pd.Series([4,'鳄鱼','21','180.0','男'])
s5 = pd.Series([5,'克烈','22','190.0','男'])
series_list=[s1,s2,s3,s4,s5]
#创建一个DataFrame对象存储通讯录
df=pd.DataFrame(series_list)
# 打印出构造的DataFrame
print(df)

看着很复杂,但是别慌,慢慢来~~
根据打印的结果我们来进一步分析
在这里插入图片描述
整个数据被分为三部分:行索引(index),列索引(columns)及数据内容(data).
但是当行和列索引的值没被定义的时候,会被默认为0~n,索引就是为了更好的查询资料。接下来解析一下series
Series是Pandas中最基本的对象,Series类似一种一维数组, 能为数据自定义标签,也就是行索引(index)我们来创建一个series看看效果:

# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用默认索引
sel =  Series(data=['cahngzhang','uzi','xiaotian','xiye','pdd'])
print(sel)
0    cahngzhang
1           uzi
2      xiaotian
3          xiye
4           pdd
dtype: object

一个Series其实就是一条数据,Series方法的第一个参数是data,第二个参数是index(索引),但是上述代码没有,所以会传默认值0~n.
那么接下来自定义一下我们的行索引.

# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用自定义索引
sel =  Series(data=['cahngzhang','uzi','xiaotian','xiye','pdd'],
              index = ['1','3','5','7','8'])
print(sel)
1    cahngzhang
3           uzi
5      xiaotian
7          xiye
8           pdd
dtype: object

index参数就是我们的行索引值,要注意的是:参数值的个数一定要和data数相同。
在创建Series时数据并不一定要是列表,也可以将一个字典传进去。

from pandas import Series,DataFrame
# 将字典转换为Series
dic={"red":100,"black":400,"green":300,"pink":900}
se2=Series(data=dic)
print(se2)
red      100
black    400
green    300
pink     900
dtype: int64

当数据是字典的时候,会将字典的键作为索引,字典的值作为索引对应的数据值。(我个人喜欢这种方式来写代码,方便理解~)
**二.**DataFrame的创建:
**DataFrame(数据表)**是一种 2 维数据结构,数据以表格的形式存储,分成若干行和列。通过 DataFrame,你能很方便地处理数据。
调用DataFrame()可以将多种格式的数据转换为DataFrame对象,它的的三个参数data、index和columns分别为数据、行索引和列索引。
我们现在就用pandas帮忙常见一套lol王者之师吧。

from pandas import Series,DataFrame

# 创建二维列表存储选手信息
lol_list = [['上单','TheShy',20],
            ['打野','小天',19],
            ['中单','Faker',23],
            ['ADC','Uzi',22],
            ['辅助','Ming',21]]
# 创建dataframe
df = DataFrame(data=lol_list)
print(df)

结果如下:

     0       1   2
0   上单  TheShy  20
1   打野      小天  19
2   中单   Faker  23
3  ADC     Uzi  22
4   辅助    Ming  21

好了,您已经成功的创建出一个英雄联盟王者之师,我们再来一起阅读下这段代码。
lol_list是使用一个二维列表,将每一个队员的信息存储到一个列表中。
调用DataFrame()将二维列表转换为DataFrame对象,行列索引使用的是默认0-N数字代表。
有没有办法在创建DataFrame对象的时候为每一列设定一个有意义的名字呢?
我们可以通过给DataFrame构造函数中的参数index,columns传值,来设定DataFrame的中的行列索引的值。

from pandas import Series,DataFrame
# 创建二维列表存储选手信息
lol_list = [['上单','TheShy',20],
            ['打野','小天',19],
            ['中单','Faker',23],
            ['ADC','Uzi',22],
            ['辅助','Ming',21]]
# 创建dataframe
df = DataFrame(data=lol_list,
               index=['a','b','c','d','e'],
               columns=['位置','ID号','年龄'])
print(df)

效果如下:

    位置     ID号  年龄
a   上单  TheShy  20
b   打野      小天  19
c   中单   Faker  23
d  ADC     Uzi  22
e   辅助    Ming  21

大家可以对比这两个代码,可以发现第二个可以看到每一列或者每一行都有了一个名字。
当然我们也可以使用字典来创建一个DataFrame数据。

from pandas import Series,DataFrame
import pandas as pd
# 使用字典创建
dic={
    '位置': ['上单', '打野', '中单', 'ADC','辅助'],
    'ID号': ['TheShy', '小天', 'Faker', 'Uzi', 'Ming'],
    'year': [20, 19, 23, 22,21]}
df=pd.DataFrame(dic)
print(df)

效果和上一个相同。通过结果可以看出当字典格式的数据被dataframe整理后,字典的键将作为数据的列索引值。

关于pandas的大致的介绍就到这了,有不恰当的地方,还请指正。

点击series详细解释

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

弈鸣coding

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

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

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

打赏作者

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

抵扣说明:

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

余额充值