pandas 语法讲解

pandas讲解

什么是pandas?

# pandas 是一个处理二维数据的一个模块

安装

# pip install pandas

pandas如何读取数据

image-20210725131843387

案例

1.读取cdv,tsv,txt
import pandas  as od 
res = pd.read_csv(path)  # path 文件路径

# 注意只读取表格类型的数据

# 方法
res = pd.read_csv(path)  # 读取txt文件
res.head()  # 读取数据的行数  默认是5行  # 行数是从 0开始
res.shape  # 查看行数,列数  返回值是一个元组,不用加括号调用
res.columns  # 查看字段  # Index(['name', 'age', 'hobby'], dtype='object')  # 当作 列表支持索引取值
res.index  # 查看索引
res.dtypes  # 查看每列的数据类型

image-20210725134007221

image-20210725134215552

2 读取excel文件
fpath = r"G:\Django_练习\airflow_test\data_pandas\scorexxxxx.xls"  # excel文件路径

res = pd.read_excel(fpath)  # 读取文件  # path 文件路径
res.head()  # 读取数据的行数  默认是5行  # 行数是从 0开始
res.shape  # 查看行数,列数  返回值是一个元组,不用加括号调用
res.columns  # 查看字段  # Index(['name', 'age', 'hobby'], dtype='object')  # 当作 列表支持索引取值
res.index  # 查看索引
res.dtypes  # 查看每列的数据类型
3 读取 数据库的数据

image-20210725195604958

pandas数据结构

1.DataFrame  # 理解成整个表格  (二维数据)
2.Series  #   理解成一行数据,一列数据  (一维数据)

# Series
Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。

# DataFrame
DataFrame是一个表格型的数据结构
	1.每一列可以是不同的值类型(数值,字符串,布尔值)
    2.既有行索引index,也有列索引columns
    3.可以被看作由Series组成的字典

DataFrame

# DataFrame 的理解
DataFrame 可以理解成整个表格对象

image-20210725201929643

案例

# Series
仅有数据列表就可以产生简单的Series

### 简单使用
import pandas  as pd
import numpy as np

s1 = pd.Series([1,'a',5.2,7])   # 只含有数据,不包含字段信息
print(s1)  # 

# 结果
0      1  # 左侧是索引  右侧是数据
1      a
2    5.2
3      7
dtype: object
    
# 方法
s1.index  # 查看索引
s1.values  # 查看数据


### 指定索引
s1 = pd.Series([1,'a',5.2,7],s1 = pd.Series([1,'a',5.2,7],index=['a','b','c','d'])
print(s1)

# 结果
a      1  # 左侧指定的索引,右侧数据
b      a
c    5.2
d      7
dtype: object
               
### python字典创建Series
userinfo = {'name': 'sun', 'age': 18}
s1 = pd.Series(userinfo)
# DataFrame

### 通过python字典创建
info = {
    'name':['sun','egon'],
    'age':[12,20]
}
s2 = pd.DataFrame(info)

# 结果
   name  age  # python中的每一个key都是一个column,value都是一列数据
0   sun   12
1  egon   20

# 方法
s2.dtypes  #  查看类型
s2.columns  # 查看columns
s2.index  #  查看索引

### 从DataFrame中获取查询出Series
1.如果查询出一行或者一列数据,返回的是pd.Series
2.如果查询出的多行,多列返回的就是pd.DataFrame

# 查询出一列,或者一行 就是Series
info = {
    'name':['sun','egon'],
    'age':[12,20]
}
s2 = pd.DataFrame(info)


print(s2['name'])  # 'sun','egon'
print(type(s2['name']))  # <class 'pandas.core.series.Series'>


# 查出多行或者多列就是DataFrame
print(s2[['name','age']])   # 索引里面必须是列表,不然报错
print(type(s2[['name','age']]))  # <class 'pandas.core.frame.DataFrame'>


# 查询一行数据
print(s2.loc[0])  # s2.loc[索引]
print(type(s2.loc[1]))  # <class 'pandas.core.series.Series'>

# 查询多行数据
print(s2.loc[0:1])
print(type(s2.loc[0:1]))  #  <class 'pandas.core.frame.DataFrame'>


pandas数据查询

# 五种数据类型的查询
1.数值
2.列表
3.区间
4.条件
5.函数

pandas查询数据方法

1.data.loc    # 根据行,列标签查询
2.data.iloc   # 根据行,列的数字位置查询
3.data.where
4.data.query

# data.loc  既能查询,又能覆盖写入,强烈推荐

pandas data.loc的五种查询数据的方法

1.使用单个label值查询数据
2.使用值列表批量查询
3.使用数值区间进行范围查询
4.使用条件表达式查询
5.调用函数进行查询

# 方法
data.set_index(数据字段,inplace=True)  # 给这个数据修改索引

# 数据的替换
s2['name'][0] = 'xxxxx'  # 把name字段的第一行数据替换成 'xxxxxx

image-20210726012507522

image-20210726012946269

data.loc 五种常用查询数据方法

1.使用单个label值查询数据
行或者列,都可以传入单个值,实现精确匹配
data.loc(index,coloumn)  # 具体可以查询到某一个值  # Series
data.loc(index,【coloumn1,coloumn2】)  # 具体可以查询到某一个值  # Series

2.使用值列表批量查询
data.loc([index1,index2],coloumn1)  # 得到一列数据   Series
data.loc([index1,index2],[col1,col2])  # 得到多行,多列数据  DataFrame

3.使用数值区间进行范围查询  # 注意 区间俩头都包含
	# 按照行index区间查询
    data.loc[index1:index5,coloumn]
    
    # 按照列coloumn区间查询
    data.loc[index1,col1:col5]
    
    # 行和列都按照区间查询
    data.loc[index1:index5,coloumn1:col5]

4.使用条件表达式查询
bool列表的长度等于行数或者列数
	# 简单条件查询,最低温度低于-10的列表
    data.loc([data['age']>18,:])  # 取行数的年龄都大于18的行,列取所有
   
	# 复杂的条件查询
    data.loc([(data['name'] == 'sun'& (data['age']>18),:])
    
5.调用函数查询
	# 直接写lambda表达式
    s2.loc[lambda data:(s2['name'] == 'sun') & (s2['age']>10),:]
    
    # 定义函数
    def func(s2):
        res = (s2['name'] == 'sun') & (s2['age']>10)
        return res

    res = s2.loc[func,:]
    print(res)

pandas怎样新增数据

1.直接赋值 
2.apply
3.assign
4.分条件赋值

直接赋值法

# 实例:清理温度列,变成数字类型
	# 修改数据
	s2.loc[:,'name'] = s2['name'].str.replace('n','xxx')  
    
    # 添加列
    s2.loc[:,'hobby'] = 'ainima'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbRBFIVf-1627315996164)(C:%5CUsers%5Chuang%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20210726215955390.png)]

apply 赋值

#  实例:添加一列温度列:
	1.如果最高温度大于33度就是高温
    2.低于-10度就是低温
    3.否则是常温
    
# data.apply   
	axis = 0  # 取数据的行   
    axis = 1  # 取数据的列
    
    # 添加一列数据
    info = {
    'name':['sun','egon'],
    'age':[12,20]
    }
    s2 = pd.DataFrame(info)
    def func2(s2):
        if s2['age'] >15:
            return 'yes'
        return 'no'

    s2.loc[:,'sex'] = s2.apply(func2,axis=1)
    print(s2)
    
# 方法
s2['sex'].value_counts()  # 统计该列的值出现的次数

image-20210726234605663

data.assign 方法

image-20210727000103793

按条件赋值

image-20210727000252339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值