pandas入门精简版

本文详细比较了Pandas和NumPy在Python中处理数据的不同场景,包括数据结构(Series和DataFrame)、文件读取、基本操作、统计分析以及数据清洗和融合。Pandas适用于表格数据处理,而NumPy则适合数值计算和科学计算。
摘要由CSDN通过智能技术生成

pandas和numpy对比

import numpy as np
import pandas as pd

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

pandas有标签(Column 名)和索引(Row index)

如果需要处理表格型数据、进行数据清洗和转换,通常会首选Pandas。
如果需要进行数值计算、线性代数运算或高性能的科学计算,NumPy可能更适合。

基本操作

从文件读取数据

excel文件

在这里插入图片描述

a=pd.read_excel("体检数据.xlsx")
b=pd.read_excel("体检数据.xlsx",index_col=0)
print(a)
print(b)
   学号  姓名   身高  体重   肺活量
0   1  小明  168  60  3200
1   2  小黄  187  80  3800
2   3  小花  170  70  3400
    姓名   身高  体重   肺活量
学号                   
1   小明  168  60  3200
2   小黄  187  80  3800
3   小花  170  70  3400

csv或txt等纯文本文件

在这里插入图片描述

a=pd.read_csv("体检数据.csv",index_col=0,sep=",")
print(a)

    姓名   身高  体重   肺活量
学号                   
1   小明  168  60  3200
2   小黄  187  80  3800
3   小花  170  70  3400

Pandas 中的数据是什么

数据序列Series(一维)

a=[1,2,3]
a=pd.Series(a,index=["a","b","c"])
print(a)

b=a.to_numpy()
print(type(b))

a    1
b    2
c    3
dtype: int64
<class 'numpy.ndarray'>

数据表DataFrame(二维)

a=pd.DataFrame( {"第一列":[1,2],"第二列":[3,4]} ,index=["第一行","第二行"])
print(a)
print(a.index)
print(a.columns)
print(a["第一列"])
# 想获取每行后面用loc或者iloc实现,敬请期待
     第一列  第二列
第一行    1    3
第二行    2    4
Index(['第一行', '第二行'], dtype='object')
Index(['第一列', '第二列'], dtype='object')
第一行    1
第二行    2
Name: 第一列, dtype: int64

选取数据

a=np.arange(-12,12).reshape(6,4)
b=pd.DataFrame(a,index=list("abcdef"),columns=list("ABCD"))
print(b)
    A   B   C   D
a -12 -11 -10  -9
b  -8  -7  -6  -5
c  -4  -3  -2  -1
d   0   1   2   3
e   4   5   6   7
f   8   9  10  11

选Column

c=b["A"]
print(c)
c=b[["A","B"]]
print(c)
a   -12
b    -8
c    -4
d     0
e     4
f     8
Name: A, dtype: int32
    A   B
a -12 -11
b  -8  -7
c  -4  -3
d   0   1
e   4   5
f   8   9

loc(通过自定义的序号索引)

c=b.loc["a"]
print(c)
c=b.loc[["a","b"]]
print(c)
A   -12
B   -11
C   -10
D    -9
Name: a, dtype: int32
    A   B   C  D
a -12 -11 -10 -9
b  -8  -7  -6 -5

iloc(通过默认的序号索引)

c=b.iloc[0]
print(c)
c=b.iloc[[0,1]]
print(c)
A   -12
B   -11
C   -10
D    -9
Name: a, dtype: int32
    A   B   C  D
a -12 -11 -10 -9
b  -8  -7  -6 -5

loc和iloc如何任意选取行列

c=b.loc[["a","b"],"B":"C"]
print(c)
c=b.iloc[[0,1],1:3]
print(c)
    B   C
a -11 -10
b  -7  -6
    B   C
a -11 -10
b  -7  -6

loc和iloc混搭

# iloc->loc
print(b.index)
print(b.columns)
print(b.index[0:2])
print(b.columns[0:2])
#loc->iloc
print(b.index.get_indexer(['a','b']))
print(b.columns.get_indexer(['A','B']))
Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
Index(['A', 'B', 'C', 'D'], dtype='object')
Index(['a', 'b'], dtype='object')
Index(['A', 'B'], dtype='object')
[0 1]
[0 1]

条件过滤筛选

#选在 A Column 中小于 0 的那些数据
c=b["A"]<0
print(c)
print(b[c])
# 用loc选在第一行数据不小于 -10 的数据
c=b.loc["a"]>=-10
print(c)
print(b.loc[["a"],c])
a     True
b     True
c     True
d    False
e    False
f    False
Name: A, dtype: bool
    A   B   C  D
a -12 -11 -10 -9
b  -8  -7  -6 -5
c  -4  -3  -2 -1
A    False
B    False
C     True
D     True
Name: a, dtype: bool
    C  D
a -10 -9

统计展示

基础统计方法

快速总结

a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
a=pd.DataFrame(a,index=["r1","r2","r3","r4"],columns=["c1","c2","c3"])
print(a)
a.describe()
    c1  c2  c3
r1   1   2   3
r2   4   5   6
r3   7   8   9
r4  10  11  12
              c1	    c2	        c3
count	4.000000	4.000000	4.000000
mean	5.500000	6.500000	7.500000
std	3.872983	3.872983	3.872983
min	1.000000	2.000000	3.000000
25%	3.250000	4.250000	5.250000
50%	5.500000	6.500000	7.500000
75%	7.750000	8.750000	9.750000
max	10.000000	11.000000	12.000000

处理空值

a=pd.DataFrame([
    [1,None,None,4],
    [5,6,7,None],
    [9,10,11,12],
   ], columns=list("abcd")

)
print(a)
   a     b     c     d
0  1   NaN   NaN   4.0
1  5   6.0   7.0   NaN
2  9  10.0  11.0  12.0
print(a.isnull())
       a      b      c      d
0  False   True   True  False
1  False  False  False   True
2  False  False  False  False
print(a.dropna())
   a     b     c     d
2  9  10.0  11.0  12.0
print(a.fillna(0))
   a     b     c     d
0  1   0.0   0.0   4.0
1  5   6.0   7.0   0.0
2  9  10.0  11.0  12.0

数据处理

数据管理

融合数据

融合Merge

left=pd.DataFrame({
    "key":['k0','k1','k2','k3'],
    "a":['a0','a1','a2','a3'],
    "b":['b0','b1','b2','b3']
})
print(left)
right=pd.DataFrame({
    "key":['k0','k1','k2','k3'],
    "c":["c0","c1","c2","c3"],
    "d":["d0","d1","d2","d3"]
})
print(right)
  key   a   b
0  k0  a0  b0
1  k1  a1  b1
2  k2  a2  b2
3  k3  a3  b3
  key   c   d
0  k0  c0  d0
1  k1  c1  d1
2  k2  c2  d2
3  k3  c3  d3
print(pd.merge(left,right,on="key"))
  key   a   b   c   d
0  k0  a0  b0  c0  d0
1  k1  a1  b1  c1  d1
2  k2  a2  b2  c2  d2
3  k3  a3  b3  c3  d3

数据分组

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值