python的pandas库使用

Pandas 学习笔记

学习源于Pandas的中文doc:https://www.pypandas.cn/docs/

一、数据结构

Pandas 的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。对于 R 用户,DataFrame 提供了比 R 语言 data.frame 更丰富的功能。Pandas 基于 NumPy (opens new window)开发,可以与其它第三方科学计算支持库完美集成。

维数名称描述
1Series带标签的一维同构数组
2DataFrame带标签的,大小可变的,二维异构表格

二、导入与生成对象

如果未安装库,到python包的scripts文件夹下进行cmd,输入以下指令通过pip安装库。

pip install numpy
pip install pandas

以下列方式导入 Pandas 与 NumPy

import numpy as np
import pandas as pd

2.1. 生成Series对象

s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
#注意此处np.nan指的是numpy库中的NaN值

用值列表生成 Series 时,Pandas 默认自动生成整数索引
输出:

#output
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

Process finished with exit code 0

2.2. 生成 DataFrame对象

使用columns参数指定DataFrame的列名

df = pd.DataFrame(columns=list('ABCD'))
print(df)

输出:

Empty DataFrame
Columns: [A, B, C, D]
Index: []

三、数据操作

简单赋值与取值

df = pd.DataFrame(columns=list('ABCD'))
df.head()

#赋值
#新增列E并赋值为1,2,3
df['E'] = ['1','2','3']
print(df)

#给第0行第A列赋值
df.at[0, 'A'] = 1
print(df)

#给第2行赋值
df.at[1] = [1,2,3,4,5]
print(df)

#按位置赋值:给第三行第1列赋值
df.iat[2, 0] = 21
print(df)

#取出第2行到s2(第二行索引为1)
s2 = df.iloc[1]
print(s2)

#取出E排
l2= df['D']
print(l2)

输出如下所示:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
Empty DataFrame
Columns: [A, B, C, D]
Index: []

     A    B    C    D  E
0  NaN  NaN  NaN  NaN  1
1  NaN  NaN  NaN  NaN  2
2  NaN  NaN  NaN  NaN  3

     A    B    C    D  E
0    1  NaN  NaN  NaN  1
1  NaN  NaN  NaN  NaN  2
2  NaN  NaN  NaN  NaN  3

     A    B    C    D  E
0    1  NaN  NaN  NaN  1
1    1    2    3    4  5
2  NaN  NaN  NaN  NaN  3

    A    B    C    D  E
0   1  NaN  NaN  NaN  1
1   1    2    3    4  5
2  21  NaN  NaN  NaN  3

A    1
B    2
C    3
D    4
E    5
Name: 1, dtype: object

0    NaN
1      4
2    NaN
Name: D, dtype: object

Process finished with exit code 0

提取列

data['A']           #单列
data[['A', 'B']]    #多列
data.loc[:, 'A']
data.loc[:, ['A', 'B']]

提取行

data.loc[1]     #第一行
data.loc[:1]    #提取到第i行
data.loc[[0,1]] #提取多行

四、CSV文件处理 输入与输出

4.1. 写入与读取csv文件

#写入
df.to_csv('myfile.csv')
#读取
df1 = pd.read_csv('myfile.csv')
print(df1)

输出

   Unnamed: 0   A    B    C    D  E
0           0   1  NaN  NaN  NaN  1
1           1   1  2.0  3.0  4.0  5
2           2  21  NaN  NaN  NaN  3
#写入excel
df.to_excel('myfile.xlsx', sheet_name='Sheet1')
#读取excel
df2 = pd.read_excel('myfile.xlsx', 'Sheet1', index_col=None, na_values=['NA'])
print(df2)

输出

Unnamed: 0   A    B    C    D  E
0           0   1  NaN  NaN  NaN  1
1           1   1  2.0  3.0  4.0  5
2           2  21  NaN  NaN  NaN  3

在这里插入图片描述

五、Head 与 Tail

先初始化一个pd

df=pd.DataFrame([[ 1 , 2 , 3 , 4 , 5 ],
                 [ 6 , 7 , 8 , 9 , 10],
                 [11 ,12 ,13 ,14 , 15],
                 ['a','b','c','d','e'],
                 ['f','g','h','i','j']],
                columns=['A','B','C','D','E'])
print(df)

head() (opens new window)与 tail() (opens new window)用于快速预览 Series 与 DataFrame,默认显示 5 条数据,也可以指定显示数据的数量。

#取前部分,默认5条
print(df.head())
#只显示头两条
print(df.head(2))
#尾部同理
print(df.tail(3))

输出如下:

    A   B   C   D   E
0   1   2   3   4   5
1   6   7   8   9  10
2  11  12  13  14  15
3   a   b   c   d   e
4   f   g   h   i   j

   A  B  C  D   E
0  1  2  3  4   5
1  6  7  8  9  10

    A   B   C   D   E
2  11  12  13  14  15
3   a   b   c   d   e
4   f   g   h   i   j

六、属性与底层数据

Pandas 可以通过多个属性访问元数据:

1. shape:

输出对象的轴维度,与 ndarray 一致

2. 轴标签

Series: Index (仅有此轴)
DataFrame: Index (行) 与列

df=pd.DataFrame([[ 1 , 2 , 3 , 4 , 5 ],
                 [ 6 , 7 , 8 , 9 , 10],
                 [11 ,12 ,13 ,14 , 15],
                 ['a','b','c','d','e'],
                 ['f','g','h','i','j']],
                columns=['A','B','C','D','E'])
print(df)
#打印形状
print(df.shape)
#打印索引(左边的索引列)
print(df.index)

输出:

    A   B   C   D   E
0   1   2   3   4   5
1   6   7   8   9  10
2  11  12  13  14  15
3   a   b   c   d   e
4   f   g   h   i   j
(5, 5)
RangeIndex(start=0, stop=5, step=1)

持续更新…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值