pandas学习笔记

目录

一、什么是pandas🤔

1.1 简介

1.2 安装🚀

二、pandas实操😋

2.1  pandas Series

  2.2 pandas DataFrame

2.3 pandas处理数据

       ✅ 选择数据 

        ✅赋值数据

       ✅ 处理空数据

2.4 pandas导入导出

2.5 pandas合并

       ✅ concat

      ✅ merge


一、什么是pandas🤔

1.1 简介

        他是前一篇博文介绍的numpy类似,是一个开源的数据分析和数据处理库,是numpy的扩展,如果把numpy比作一个列表,那么pandas就可以看作字典。可以对数组中不同行不同列进行命名。引入了两种新的数据结构:DataFrameSeries

1.2 安装🚀

        采用清华镜像源安装,在pycharm终端输入

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas

二、pandas实操😋

        首先先导入numpy和pandas

import numpy as np
import pandas as pd

2.1  pandas Series

        Series类似于numpy中的一维数组,下面是定义一个Series的例子

ser1 = pd.Series([1, 8, 6, np.nan, 656])
print(ser1)

        

        在定义完之后,同时会自动输出每个元素对应的索引,默认是从0开始,当然,也可以在定义的时候指定每个元素对应的索引值,只不过这时候要定义为字典

ser1 = pd.Series({1: '1', 2: '8', 3: '6', 4: 'np.nan', 5: '656'})
print(ser1)

        指定索引值取出所需数值

myser1 = pd.Series(ser1, index=[1, 2])  #取出索引为1和2的元素

  2.2 pandas DataFrame

         用numpy直接定义

df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['a', 'b', 'c', 'd']) #自定义列的名称
print(df)

        用字典定义。字典的键成为列名,值成为列数据。

df = pd.DataFrame({'a': [0, 1, 2], 'b': [2, 3, 4]}) 
print(df)

2.3 pandas处理数据

        首先,创建一个DataFrame

datas = pd.date_range('20240510', periods=6)
df = pd.DataFrame(np.arange(24).reshape(6, 4), index=datas, columns=['A', 'B', 'C', 'D'])
print(df)

       ✅ 选择数据 

         选择方法如下

# 选择A列
print(df['A'])
# 切片选取0~2行
print(df[0:3])
# 通过标签loc选择某一行
print(df.loc['20240510'])
# 通过标签loc选择某一列
print(df.loc[:, 'A'])
# 通过iloc位置选择第0行第0列
print(df.iloc[0, 0])
# 通过条件判断选择A列中>8的数,输出全部列
print(df[df.A > 8])

        ✅赋值数据

# 通过iloc修改
df.iloc[0, 0] = 1
# 通过loc修改
df.loc['20240510', 'A'] = 1
# 通过条件判断修改
df.A[df.A > 4] = 0
# 添加新列F
df['F'] = np.nan
df['E'] = pd.Series(np.arange(6), index=(datas))

       ✅ 处理空数据

        把对应元素设置为none

df.loc['20240510', 'A'] = np.nan
df.loc['20240511', 'C'] = np.nan

       丢掉包含none的每一行

print(df.dropna(axis=0, how='any'))

        填充none为0

print(df.fillna(value=0))

        检查数组中是否有none的数据

print(np.any(df.isnull()) == True)

2.4 pandas导入导出

        导入

data = pd.read_csv('文件名')

         导出

数据.to_pickle('要保存的文件名')

2.5 pandas合并

       ✅ concat

        首先,创建3个DataFrame

df1 = pd.DataFrame(np.ones(12).reshape(3, 4) * 0, columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.ones(12).reshape(3, 4) * 1, columns=['A', 'B', 'C', 'D'])
df3 = pd.DataFrame(np.ones(12).reshape(3, 4) * 2, columns=['A', 'B', 'C', 'D'])

        进行竖向合并

result = pd.concat([df1, df2, df3], axis=0, ignore_index=True)  # 竖向合并

        若colums和index不一样,则用join,包括inner和outer

df1 = pd.DataFrame(np.ones(12).reshape(3, 4) * 0, columns=['A', 'B', 'C', 'D'], index=[1, 2, 3])
df2 = pd.DataFrame(np.ones(12).reshape(3, 4) * 1, columns=['A', 'B', 'E', 'D'], index=[2, 3, 4])

res1 = pd.concat([df1, df2], join='outer')
print("res1=", res1)
res2 = pd.concat([df1, df2], join='inner', ignore_index=True)
print("res2=", res2)

        添加数据

df1 = pd.DataFrame(np.ones(12).reshape(3, 4) * 0, columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.ones(12).reshape(3, 4) * 1, columns=['A', 'B', 'C', 'D'])
res = df1._append(df2, ignore_index=True)
print(res)

 

      ✅ merge

        同样的,先创建2个DataFrame

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']
                    })
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']
                    })

        以key参数为索引进行合并(一个column)

res = pd.merge(df1, df2, on='key')

        

          以key1,key2参数为索引进行合并(两个column)

df1 = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
                    'key2': ['K4', 'K5', 'K6', 'K7'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']
                    })
df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
                    'key2': ['K4', 'K5', 'K6', 'K7'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']
                    })
res = pd.merge(df1, df2, on=['key1', 'key2'])  # 默认inner
print(res)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值