第八章-----python数据分析基础:Pandas模块

本章节详细介绍了Python数据分析库Pandas的基础知识,包括Series和DataFrame对象的创建、访问、使用,以及数据处理操作如添加、删除列和行,索引、排序和数据合并等。还探讨了字符串函数、自定义函数的应用以及Pandas对象的高级索引功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# pandas 环境配置

 pip install pandas

# 一维数据结构:Series对象

#导包

import pandas as pd

import numpy as np

 #Series对象的生成# 从ndarray创建一个Series

a = np.array([1,2,3,4,5])
s1 = pd.Series(a,index=['a','b','c','d','e'],copy=False)
print(s1)
#修改数据
s1['a'] = 100
print(s1)
print(a)

 # 从字典创建一个Series

""" 
字典 = {k:v}
k:在Series中是index
"""
'''d1 = {'zs':18,'ls':20}
s3 = pd.Series(d1)
print(s3)
print(s3['zs'])  #18 

# 通过位置访问Series

""" 
语法:s1[index] 获取单个数据
"""
#可以使用默认索引,也可以使用自定义索引
d1 = {'zs':20,'ls':30,'ww':40,'ch':20,'zl':30}
s1 = pd.Series(d1)
print(s1['zs']) #使用自定义索引   20
print(s1[0]) #使用默认索引  20

 # 通过索引访问Series

""" 
语法:
s1[list]  获取索引中的数据
s1[index1:index2] 获取从第一个索引到第二个索引的数据,左开右闭
数字索引是左开右闭,标签索引是左开右开
"""

## 代码 

print(s1[[0,3,4]])
print(s1['zs':'ch'])   #左开右开
print(s1[['zs','ch','ww']])

 #Series对象的使用

""" 
axes    返回Series索引列表
dtype   返回Series的数据类型
empty   判断Series是否为空,如果为空,则返回True
ndim    返回基础数据的维度数,默认为1
size    返回基础数据中的元素个数
values  将Series作为ndarray返回
head()  返回前n行
tail()  返回最后n行
head()返回前n行(观察索引值) 默认数量为5,可以传递自定义数值
tail()返回最后n行(观察索引值) 默认数量为5,可以传递自定义数值
"""

## 代码

#可以使用默认索引,也可以使用自定义索引
'''d1 = {'zs':20,'ls':30,'ww':40,'ch':20,'zl':30}
s1 = pd.Series(d1)
print(s1.axes)  #[Index(['zs', 'ls', 'ww', 'ch', 'zl'], dtype='object')]
print(s1.dtype)  #int64
print(s1.empty)  #False
print(s1.ndim)   #1
print(s1.size)   #5
print(s1.values)  #[20 30 40 20 30]  
print(type(s1.values))  #<class 'numpy.ndarray'>
print(s1.head(3))
print(s1.tail(2))

#二维数据结构:DataFrame对象

    # DataFrame对象的生成

""" 
pandas.DataFrame(data,index,columns,dtype,copy)
data     支持多种数据类型,如:ndarray  series  map  lists  dict  constant 和另一DataFrame
index    行标签,如果没有传递索引值,默认值为0,1,2,3,4......
columns  列标签,如果没有传递索引值,默认值为0,1,2,3,4.......
dtype    每列的数据类型
copy     是否复制数据,默认值为False
"""

## 代码

np01 = np.arange(20).reshape(4,5)
df1 = pd.DataFrame(np01,index=['a','b','c','d'],columns=['name','age','sex','hobbit','address'])
#print(df1)

## 利用单层list (数据变成行数据)

x = [1,2,3,4,5]
df2 = pd.DataFrame(x)
print(df2)

## 利用双层list

x = [
    ['zs',20],
    ['ls',30],
    ['ch',40]
]
df3 = pd.DataFrame(x,columns=['name','age'])
print(df3)

## 利用数据是字典的列表创建

x = [
    {'a':20,'b':30},
    {'a':100,'b':200,'c':400}
]
df4 = pd.DataFrame(x)
print(df4)

## 利用字典创建DataFrame (a、b是列索引,一定要设置行索引(index),否则报错)

x = {'aa':1,'bb':1.5,'cc':2,'dd':17}
df1 = pd.DataFrame(x,index=['价格'])
print(df1)

x = {
    '食品':['aa','bb','cc'],
    '价格':[1,2,1.5]
}
df2 = pd.DataFrame(x)
print(df2)

s1 = pd.Series(['aa','bb','cc'])
s2 = pd.Series([1,2,1.5])
x = {
    '食品':s1,
    '价格':s2
}
df3 = pd.DataFrame(x)
print(df3)

# DataFrame 对象的使用 

    #DataFrame读取列

""" 
语法:
df[columns_label] 查询单列
df[[coiumns_lable]]   查询多列
查询出一列会进行降维DataFrame------> Series
"""

## 代码 

s = df3['食品']
print(s)
print(type(s))

s2 = df3[['食品','价格']]
print(s2)
print(type(s2))

 #DataFrame添加列

""" 
语法:
语法:df[columns] = 数据
切记数据要是同类型的数据,
df1[columns]=df1[columns]+df1[coiumns]
"""

 ## 代码

a = ['好吃','多','好']
df3['评价'] = a
print(df3)
print("----------------------------")
df3['详细评价']=df3['食品']+df3['评价']
print(df3)

# DataFrame删除列

""" 
删除语法
del df[columns]  根据下标进行检索删除,没有返回值
df.pop(columns)  根据下标进行检索删除,并返回删除的那一列
"""

## 代码

del df3['评价']
print(df3)

a = df3.pop('详细评价')
print('a',a)  #要删除的那一列数据
print('df3',df3)  #删除后的数据

# DataFrame读取行

  # 按索引选择

""" 
loc[自定义索引(标签索引)]
iloc[默认索引(数字索引)]
语法:
loc[index] 查询一行数据
扩展
loc[index,columns]  精确到行和列,那就是一个数据
查询多行和多列(精确到第几行和第几列)
loc[[index1:index2,....],[columns1:columns12,.....]] 
查询多行和多列(第几行到第几行,第几列到第几列)
不是左开右闭
loc[index1:index2,columns1:columns2] 
使用布尔索引也可以查询多行多列
loc[行_布尔索引,列_布尔索引] 
"""

## 代码 

s1 = pd.Series(['馒头','大米','包子','大盘鸡','麻辣烫','鱼粉','热干面'],index=['row1','row2','row3','row4','row5','row6','row7'])
s2 = pd.Series([1,2,1.5,12,16,10,8],index=['row1','row2','row3','row4','row5','row6','row7'])
s3 = pd.Series(['y','y','y','y','y','y','y'],index=['row1','row2','row3','row4','row5','row6','row7'])
x = {
    '食品':s1,
    '价格':s2,
    '评价':s3
}
df3 = pd.DataFrame(x)
print(df3)

print(df3.loc['row1'])
print(df3.loc['row4','食品'])  #大盘鸡
print(df3.loc[['row1','row3'],['食品','价格']])
print(df3.loc[['row1','row3'],'食品'])
print(df3.loc['row1',['食品','价格']])
print(df3.loc['row1':'row4','食品':'价格'])
print(df3.loc[['row1','row3'],'食品':'价格'])

index_bool = [True,False,False,False,False,True,True]
col_bool = [True,True,False]
print(df3.loc[index_bool,col_bool])

b = df3['价格'] > 8
print(df3.loc[b]) #行

# 按位置选择

"""
查询行的,iloc[数字索引]
语法:
iloc[num_index] 根据索引位置获取行
iloc[num_index1:num_index2] 第几行到第几行,左开右闭
iloc[[num_index1,num_index2,.....]] 第几行和第几行
iloc[num_index,num_columns] #第几行的第几列
iloc[num_index,[num_columns1,num_columns2,....]] 第几行,第几列和第几列
iloc[num_index,[num_columns1:num_columns2]] 第几行,第几列到第几列,左开右闭
iloc[[num_index1,num_index2,.....],[num_columns1,num_columns2,....]] 
iloc[num_index1:num_index2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值