【Python数据分析学习笔记-4】pandas 的使用-pandas数据结构、pandas索引操作

首先导入所需要的模块

import pandas as pd
from pandas import DataFrame,Series
import numpy as np
创建Series
obj_1=Series([1,2,3,4])
print(obj_1)

# Series数据 :索引在左,值在右
# 没有指定索引,Series数据会以0~len-1(len为数据的长度)作为索引
obj_2=Series([1,2,3,4],index=['a','b','c','d'])
print(obj_2)

# Series有values和index属性
print(obj_2.values)
print(obj_2.index)

在这里插入图片描述

Series的索引

print(obj_2['a'])
obj_2['a']=100
print(obj_2[['a','c']])

在这里插入图片描述

Series的运算

obj_3=Series([-1,78,-90,60],index=['a','b','c','r'])
print(obj_3**2)
print(np.abs(obj_3))
print(obj_3[obj_3>60])

# Series对象和索引都有name属性
obj_3.name='name'
obj_3.index.name='score'
print(obj_3)

在这里插入图片描述
在这里插入图片描述

创建DataFrame数据

datas={
    'name':['刘邦','李渊','朱元璋','孙中山'],
    'adress':['江苏','陕西','安徽','广东'],
    'age':[56,40,30,45],
    'year':[206,618,1368,1912]
}
df_1=DataFrame(data=datas)
print(df_1)
# 可以通过columns指定列索引的排序顺序
df_2=DataFrame(data=datas,columns=['name','year','age','adress'])
print(df_2)

# 在没有指定索引的情况下,默认以0~len-1(len为数据的长度)作为索引
# 也可以指定索引
df_3=DataFrame(data=datas,columns=['name','year','age','adress'],index=['a','b','c','d'])
print(df_3)

#DataFrame的index和columns也有name属性
df_3.index.name='id'
df_3.columns.name='renwu_id'
print(df_3)

# 通过values属性可以将DataFrame数据转换为二维数组
print(df_3.values)

在这里插入图片描述

pandas索引操作

重新索引

# pandas索引操作
# 重新索引
# 所说的索引并不是给索引重新起名,而是重新进行排序,如果某个索引值不存在,会出现缺失值
obj_4=Series([1,2,3,4,5],['a','b','c','d','e'])
print(obj_4)
obj_4=obj_4.reindex(['f','g','b','c','d'])
print(obj_4)
# 如果需要对缺失值进行填充,可以通过method参数来实现,参数值可以为ffill或pad
# 参数值为bfill或backfill时为向后填充
obj_5=Series([1,2,3,4],index=[1,3,5,7])
print(obj_5)
print(obj_5.reindex(range(1,8),method='ffill'))
print(obj_5.reindex(range(1,8),method='bfill'))

# 对于DataFrame数据来说
df_4=DataFrame(np.arange(16).reshape(4,4),index=['a','b','c','d'],columns=['a','b','c','d'])
print(df_4)

df_4_1=df_4.reindex(['b','c','d','a'])
df_4_2=df_4.reindex(columns=['b','c','d','e'],fill_value=100)
print('-'*25)
print(df_4_1)
print('-'*25)
print(df_4_2)

在这里插入图片描述
在这里插入图片描述

更换索引

datas={
    'name':['刘邦','李渊','朱元璋','孙中山'],
    'adress':['江苏','陕西','安徽','广东'],
    'age':[56,40,30,45],
    'year':[206,618,1368,1912]
}
df_5=DataFrame(data=datas)
print(df_5)
print('-'*25)
df_5_1=df_5.set_index('name')
print(df_5_1)
print('-'*25)
df_5_2=df_5_1.reset_index()
print(df_5_2)

# 排序
df_5_3=df_5.sort_values(by='age')
print(df_5_3)
df_5_4=df_5_3.reset_index()
print(df_5_4)
# 原索引可以通过drop参数进行删除
df_5_5=df_5_3.reset_index(drop=True)
print(df_5_5)

在这里插入图片描述

索引和选取

obj_6=Series([1,2,3,4,5,6],index=['a','b','c','d','e','f'])
print(obj_6)
print(obj_6[0])
print(obj_6['a'])
print(obj_6[['c','a']])

# 切片操作与Python列表有所不同
print(obj_6[0:2])
print(obj_6['a':'c'])

在这里插入图片描述

选取列 、选取行

# 选取列
datas={
    'name':['刘邦','李渊','朱元璋','孙中山'],
    'adress':['江苏','陕西','安徽','广东'],
    'age':[56,40,30,45],
    'year':[206,618,1368,1912]
}
df_6=DataFrame(data=datas)
print(df_6)
print(df_6['name'])
print(df_6.name)
print(df_6[['name','adress']])

# 选取行
print(df_6[0:2])
df_6_1=df_6.set_index('name')
print(df_6_1)
print(df_6_1['刘邦':'李渊'])

print(df_6_1.loc['刘邦'])
print(df_6_1.loc[['刘邦','李渊']])

print(df_6_1.iloc[0])
print(df_6_1.iloc[[0,1]])

在这里插入图片描述
在这里插入图片描述

布尔选择

df_7=DataFrame(data=datas)
df_7_1=df_7.set_index('name')
print(df_7_1)
print(df_7_1['year']==206)
print(df_7_1[df_7_1['year']==206])
print(df_7_1[(df_7_1['year']==206) |(df_7_1['adress']=='陕西')])
# '|' 或、'&'和、

在这里插入图片描述

增加

# 增加
new_data={
    'name':'杨坚',
    'adress':'陕西',
    'age':50,
    'year':581
}
df_7_1=df_7_1.reset_index()
df_7_2=df_7_1.append(new_data,ignore_index=True)  # 忽略索引值
print(df_7_2)
# 增加一个新列
df_7_2['type']='historical_figures'
print(df_7_2)
df_7_2['post']=['汉高帝','唐高祖','明太祖','中华民国临时大总统','隋文帝']
print(df_7_2)

在这里插入图片描述

删除和修改

# 删除
df_7_3=df_7_2.drop(2)
print(df_7_3)
df_7_4=df_7_3.drop('type',axis=1)
print(df_7_4)

# 修改
df_7_4.rename(index={3:2,4:3},columns={'name':'Name','age':'Age'},inplace=True)
print(df_7_4)

在这里插入图片描述

发布了51 篇原创文章 · 获赞 299 · 访问量 9196

猜你喜欢

转载自blog.csdn.net/qq_45404396/article/details/104246651