python数据结构

本文介绍了Python的Pandas库,详细讲解了Series和DataFrame的使用,包括数据读写、处理、合并和筛选。同时,文章还探讨了Matplotlib的图形绘制,如折线图、柱状图、散点图等,以及如何自定义图表的标题、X轴刻度等属性。
摘要由CSDN通过智能技术生成

Pandas

pandas的数据结构是DataFrame与Series

Series

series是表格中的一行,类似一维数组,可以自定义标签

# 导入Series
from pandas import Series,DataFrame

# 创建Series,使用自定义索引
sel =  Series(data=[1,'TheShy',20,'天不生theshy,Lpl上单万古如长夜'],
              index = ['排名','ID号','年龄','评语'])#注意参数值的个数相同
print(sel)

当data为字典时,字典的键key会作为索引,value作为数据值

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

使用values方法获取数据的值,index.tolist获取索引的值,items获取成对的索引和值

from pandas import Series
emp=['001','002','003','004','005','006']
name=['亚瑟', '后裔','小乔','哪吒' ,'虞姬','王昭君']
series = Series(data=name,index=emp)

# 获取数据的值
print(series.values)
# 获取索引的值
print(series.index.tolist())
# 获取每对索引和值
print(list(series.items()))
print(series)
#['亚瑟' '后裔' '小乔' '哪吒' '虞姬' '王昭君']values方法
#['001', '002', '003', '004', '005', '006']index.tolist方法
#[('001', '亚瑟'), ('002', '后裔'), ('003', '小乔'), ('004', '哪吒'), ('005', '虞姬'), ('006', '王昭君')]items方法
#001     亚瑟
#002     后裔
#003     小乔
#004     哪吒
#005     虞姬
#006    王昭君

可以通过索引值来选择数据

# 使用索引值获取单个数据
print(series['001'])
#亚瑟
# 使用索引值获取多个不连续的数据,注意[[  ]]
print('索引下标',series[['002','004']])
#索引下标 002    后裔
#004    哪吒
# 使用切片获取连续的数据
print('索引切片',series['001':'004'])
#索引切片 001    亚瑟
#002    后裔
#003    小乔
#004    哪吒

当使用默认的index值时,切片取不到最后的值

# 使用切片获取连续的数据
print('位置切片',series[0:3])
#位置切片 001    亚瑟
#002    后裔
#003    小乔

可以使用for循环遍历拿到data、index和index-data对的值

# 遍历并拿到data数据
for value in series:
    print(value)

# 遍历并拿到index数据
for value in series.keys():
    print(value)

# 遍历并拿到每对索引和数据
for value in series.items():
    print(value)

DataFrame

dataframe相当于整个表格
dataframe是二维数据结构,三个参数:data、index、columns(列索引)
可以用ndim查看维度,shape看行数和列数,index、column看行列索引值

import pandas as pd

df_dict = {
   
	'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
	'age':['18','20','19','22'],
	'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
print(df)
# 获取行数和列数
print(df.shape)

# 获取行索引
print(df.index.tolist())

# 获取列索引
print(df.columns.tolist())

# 获取数据的维度
print(df.ndim)
#         name age weight
#001  ZhangSan  18     50
#002      LiSi  20     55
#003    WangWu  19     60
#004   ZhaoLiu  22     80
#(4, 3) 行列数
#['001', '002', '003', '004'] 行索引
#['name', 'age', 'weight'] key 列索引
#2	维度

数据量比较大但想看数据的具体情况的时候,可以只获取前几行或者后几行,了解数据的构成即可

# 获取前两条,默认值是5
df.head(2)
# 获取后两条,默认值是5
df.tail(2)

创建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时,key作为列索引

dic={
   
    '位置': ['上单', '打野', '中单', 'ADC','辅助'],
    'ID号': ['TheShy', '小天', 'Faker', 'Uzi', 'Ming'],
    'year': [20, 19, 23, 22,21]}
df=pd.DataFrame(dic)
print(df)
#  位置     ID号  year
#0   上单  TheShy    20
#1   打野      小天    19
#2   中单   Faker    23
#3  ADC     Uzi    22
#4   辅助    Ming    21

获取行数据

# 通过位置索引切片获取一行
print(df[0:1])
# 通过位置索引切片获取多行
print(df[1:3])
# 获取多行里面的某几列
print(df[1:3][['name','age']])
# df[]不支持直接输入标签索引获取行数据,例如:df['001']。获取DataFrame的列
print(df['name'])
# 如果获取多个列
print(df[['name','age']])

行标签索引筛选loc[],通过行位置索引筛选iloc[]

import pandas as pd

df_dict = {
   
	'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
	'age':['18','20','19','22'],
	'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
print(df)

# 获取某一行某一列的数据
print(df.loc['001','name'])
# 某一行多列的数据
print(df.loc['001',['name','weight']])
# 一行所有列
print(df.loc['001',:])
# 选择间隔的多行多列
print(df.loc[['001','003'],['name','weight']])
# 选择连续的多行和间隔的多列
print(df.loc['001':'003'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值