Pandas学习笔记

Pandas学习笔记

Pandas官方文档非常全面,但从希望快速上手使用的角度,过于全面,不过Pandas官方提供了Cheet Sheet,概要总结了Pandas的核心功能,相对于官方文档来说更加简明,不过缺点则是从刚上手使用的角度来说过于简明

于是本篇文章就围绕Cheet Sheet,增加相应的样例代码,从而在不丢失简明的基础上,逐步深入,从而能快速掌握Pandas,如果工作需要更高级的功能,再深入研究官方文档即可

创建DataFrames

通过指定每列数据构造

import pandas as pd

df = pd.DataFrame(
   {
   "a": [4, 5, 6],
    "b": [7, 8, 9],
    "c": [10, 11, 12]},
   index=[1, 2, 3])

print(df)
   a  b   c
1  4  7  10
2  5  8  11
3  6  9  12

可以简单理解为字典的键作为了列名,而idnex则作为了行号

通过指定每行数据构造

import pandas as pd

df = pd.DataFrame(
    [[4, 7, 10],
     [5, 8, 11],
     [6, 9, 12]],
    index=[1, 2, 3],
    columns=['a', 'b', 'c'])

print(df)
   a  b   c
1  4  7  10
2  5  8  11
3  6  9  12

对于双层列表(矩阵)形式的数据,通过columns参数指定列名

创建多层索引

import pandas as pd

df = pd.DataFrame(
    {
   "a": [4, 5, 6],
     "b": [7, 8, 9],
     "c": [10, 11, 12]},
    index=pd.MultiIndex.from_tuples([('d', 1), ('d', 2), ('e', 2)], 
                                    names=['n', 'v']))

print(df)
     a  b   c
n v          
d 1  4  7  10
  2  5  8  11
e 2  6  9  12

第一层索引名为n,包括d、e,第二层索引名为v,包括1、2

方法链

大多数Pandas方法的返回值还是DataFrame,于是可以通过链式调用的形式,增加代码的可读性

df = (pd.melt(df)
      .rename(columns={
   'variable': 'var', 'value': 'val'})
      .query('val >= 200')
      )

变形数据

宽格式转换为长格式

import pandas as pd

# 创建示例DataFrame
data = {
   
    'Name': ['Alice', 'Bob', 'Cathy'],
    'Math': [90, 85, 95],
    'Physics': [88, 82, 90],
    'Chemistry': [87, 80, 92]
}
df = pd.DataFrame(data)

# 使用melt函数将数据从宽格式转换为长格式
melted_df = df.melt(id_vars='Name', value_vars=['Math', 'Physics', 'Chemistry'], var_name='Subject', value_name='Score')

# 打印转换后的长格式数据
print(melted_df)
    Name    Subject  Score
0  Alice       Math     90
1    Bob       Math     85
2  Cathy       Math     95
3  Alice    Physics     88
4    Bob    Physics     82
5  Cathy    Physics     90
6  Alice  Chemistry     87
7    Bob  Chemistry     80
8  Cathy  Chemistry     92

长格式:典型的包括3列,每一行就代表某一行某一列对应的某个值,从而也可以将一张表的信息全部装下

长格式转换为宽格式

import pandas as pd

# 创建示例DataFrame
data = {
   
    'Name': ['Alice', 'Bob', 'Cathy', 'Alice', 'Bob', 'Cathy', 'Alice', 'Bob', 'Cathy'],
    'Subject': ['Math', 'Math', 'Math', 'Physics', 'Physics', 'Physics', 'Chemistry', 'Chemistry', 'Chemistry'],
    'Score': [90, 85, 95, 88, 82, 90, 87, 80, 92]
}
df = pd.DataFrame(data)

# 使用pivot函数将数据从长格式转换为宽格式
pivot_df = df.pivot(index='Name', columns='Subject', values='Score').reset_index()

# 打印转换后的宽格式数据
print(pivot_df)
Subject   Name  Chemistry  Math  Physics
0        Alice         87    90       88
1          Bob         80    85       82
2        Cathy         92    95       90

宽格式:将一个东西的所有信息都放在一行上,和常规数据库的表类似

垂直拼接

import pandas as pd

# 创建两个示例DataFrame
df1 = pd.DataFrame({
   'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2'],
                    'C': ['C0', 'C1', 'C2']})

df2 = pd.DataFrame({
   'A': ['A3', 'A4', 'A5'],
                    'B': ['B3', 'B4', 'B5'],
                    'C': ['C3', 'C4', 'C5']})

# 使用concat函数在垂直方向上合并这两个DataFrame
result = pd.concat([df1, df2])

# 打印合并结果
print(result)
    A   B   C
0  A0  B0  C0
1  A1  B1  C1
2  A2  B2  C2
0  A3  B3  C3
1  A4  B4  C4
2  A5  B5  C5

水平拼接

import pandas as pd

# 创建两个示例DataFrame
df1 = pd.DataFrame({
   'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']})

df2 = pd.DataFrame({
   'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']})

# 使用concat函数在水平方向上合并这两个DataFrame
result = pd.concat([df1, df2], axis=1)

# 打印合并结果
print(result)
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2

根据某列进行排序

import pandas as pd

# 创建示例数据
data = {
   
    'brand': ['Ford', 
  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值