【Python 数据科学】Numpy和Pandas基础

本文详细介绍了Python中Numpy和Pandas的基础操作,包括数组构建、数据类型查看、数组运算、Series与DataFrame的创建、索引与切片、数据筛选与修改等核心功能,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Numpy基础简介

1.基础

#导入包
>>>import numpy as np
#构建数组
>>>arr=np.array([1,2,3,4])
>>>arr
array([1, 2, 3, 4])
#查看类型
>>>type(arr)
 numpy.ndarray
#构建多维数组
>>>np.array([[1,2,3],[5,6,7]])
array([[1, 2, 3],
       [5, 6, 7]])

2. 数组的加减乘除、切片与列表相同

#数组切片
>>>b=np.array([[1,2,3,],[5,6,7]])
>>>b[1][0]
   5
#数据类型
>>>b.dtype
  dtype('int32')

二、Pandas 基础

1.series

1)基础
#导包
>>>import pandas as pd
#传入列表构建series,制定索引名
>>>s=pd.Series([1,2,3,4],index=['|','||','|||','||||'])
>>>s
    |       1
    ||      2
    |||     3
    ||||    4
    dtype: int64
#当一个纯数值的series新增一个object的,整个series的类型都会改变
>>>s['V']='apple'
>>>s
    |           1
    ||          2
    |||         3
    ||||        4
    V       apple
    dtype: object
#astype 改变数值类型,没有赋值没有实际更改
>>>s0=pd.Series([1,2,3,4],index=['|','||','|||','||||'])
>>>s0.astype('str')
    |       1
    ||      2
    |||     3
    ||||    4
    dtype: object
#传入字典构建series,索引名就是字典的键
>>>a={'a':'jack','b':'may','c':'lucy'}
>>>s1=pd.Series(a)
>>>s1
    a    jack
    b     may
    c    lucy
    dtype: object
#也可以重新指定给索引名,当索引名多于值得个数,默认新增NaN指
>>>s2=pd.Series(a,index =['a','b','c','4'])
>>>s2
    a    jack
    b     may
    c    lucy
    4     NaN
    dtype: object

增删方法与字典相同

>>>del s2['a']
>>>s2
	b     may
    c    lucy
    4     NaN
    dtype: object
#按值查找
>>>s[s>2]

|||     3
||||    4
dtype: int64
2)切片
#切片
>>>s['|']
   1
#列表切片,注意切片的内容是列表

>>>s[['|','||']]
    |     1
    ||    2
    dtype: int64
#隐式索引包前不包后
>>>s[0:2]
    |     1
    ||    2
    dtype: int64
#显式索引包前包后
>>>s['|':'|||']
    |     1
    ||    2
    |||   3
    dtype: int64

2.dataframe

1).构造
>>>import pandas as pd
#传入字典构建dataframe
>>>d={
    'name':['jack','nacy','betty'],
    'sex':['male','male','femal'],
    'age':[15,25,36]
   }
>>>df=pd.DataFrame(d)
>>>df
namesexage
0jackmale15
1nacymale25
2bettyfemal36
#传入数组构建dataframe,需要指定索引名和列名
>>>df2=pd.DataFrame([[1,2,3,4],[5,6,7,8]],index=list('ab'),columns=list("甲乙丙丁"))
>>>df2
a1234
b5678
#查看数据类型
>>>df.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 3 entries, 0 to 2
    Data columns (total 3 columns):
    name    3 non-null object
    sex     3 non-null object
    age     3 non-null int64
    dtypes: int64(1), object(2)
    memory usage: 152.0+ bytes

增删方式同字典

del df['name']
df
sexage
0male15
1male25
2femal36
2).切片
import pandas as pd
d={
    'name':[
        'jack','nacy','betty'],
    'sex':['male','male','femal'],
    'age':[15,25,36]
}
df=pd.DataFrame(d,index=['a','b','c'])
df
namesexage
ajackmale15
bnacymale25
cbettyfemal36
取行
取单行
df.iloc[2]
df.loc['c']
name    betty
sex     femal
age        36
Name: c, dtype: object

注意:df[2]、df[‘c’]会报错,直接方式不能取单行

取不连续多行
df.iloc[[0,2]]
df.loc[['a','c']]

注意:df[[0,2]]、df[[‘a’,‘c’]]会报错,直接方式不能取不连续多行

namesexage
ajackmale15
cbettyfemal36
取连续的多行

注意:隐式索引包前不包后,显式索引包前包后

#直接连续索引方式能用于取行
df[0:2]
namesexage
ajackmale15
bnacymale25
#直接连续索引方式能用于取行
df['a':'c']
namesexage
ajackmale15
bnacymale25
cbettyfemal36
df.iloc[0:2]
namesexage
ajackmale15
bnacymale25
df.loc['a':'c']
namesexage
ajackmale15
bnacymale25
cbettyfemal36
取列
取单列
df.name
a     jack
b     nacy
c    betty
Name: name, dtype: object
#直接单个索引只用于列
df['name']
a     jack
b     nacy
c    betty
Name: name, dtype: object
df.iloc[:,0]
a     jack
b     nacy
c    betty
Name: name, dtype: object
df.loc[:,'name']
a     jack
b     nacy
c    betty
Name: name, dtype: object
取不连续多列
#索引集合用于取列
df[['name','age']]
df.iloc[:,[0,2]]
df.loc[:,['name','age']]
nameage
ajack15
bnacy25
cbetty36
取连续多列
df.iloc[:,0:2]
namesex
ajackmale
bnacymale
cbettyfemal
df.loc[:,'name':'age']
namesexage
ajackmale15
bnacymale25
cbettyfemal36

注意:df[‘name’:‘age’]连续索引无法取到想要的数据,行数据不会显示

行列综合

连续索引用于取行,单个索引或者索引集合用于取列

#先切行,还是df,再取列
df[0:1].name
df[0:1]['name']
#先取单列,成为series,再切片
df['name'][0]
df.name[0:1]
a    jack
Name: name, dtype: object
#先切行,还是df,再取列
df['a':'b'].name
df['a':'b']['name']
#先取单列,成为series,再切片
df['name']['a':'b']
df.name['a':'b']
a    jack
b    nacy
Name: name, dtype: object
#先取行,后取列
df[0:2][['name','age']]
#先取列侯取行
df[['name','age']][0:2]
nameage
ajack15
bnacy25
#注意,这种只是行切片,先切[1:3],再将切出的结果切[0:1],并不是行列切片
df[1:3][0:1]

df.iloc[行,列]

namesexage
bnacymale25
df.iloc[1,1]
'male'
df.iloc[1:2,0:2]
namesex
bnacymale
df.iloc[1:2,[0,2]]
nameage
bnacy25
df.loc['a','name']
'jack'

df.loc[行,列]

df.loc['b':'c','name':'age']
namesexage
bnacymale25
cbettyfemal36
df.loc['b':'c',['name','age']]
nameage
bnacy25
cbetty36

附:
使用索引器ix(已过期)

#ix切片取行
>>>df.ix[0]#该方法已经过期
    name    jack
    sex     male
    age       15
    Name: 0, dtype: object

在这里插入图片描述

#ix切片取多行
>>>df.ix[0:1]#该方法已经过期
namesexage
0jackmale15
1nacymale25
#ix先取行后取列
df.ix[2:3,['age','name']]#该方法已过期
agename
c37betty
3).更改值
#更改单个值,会提示值被修改
#先找行后找列
>>>df['age'][1]=255
>>>df
namesexage
0jackmale15
1nacymale255
2bettyfemal36
#更改整列
>>>df.age=[14,26,36]
>>>df
namesexage
0jackmale14
1nacymale26
2bettyfemal36
#更改整列
>>>df.age=df.age+1
>>>df
namesexage
0jackmale15
1nacymale27
2bettyfemal37
#也可以更改索引
>>>df.index=list('abc')
>>>df
namesexage
ajackmale14
bnacymale26
cbettyfemal36
#无法改动,提示使用索引切片方式改动
df[df.age==27].name='seven'
df
#索引方式修改
>>>df.loc[df.age==37,'age']=38
>>>df
agenamesex
a15jackmale
b27nacymale
c38bettyfemal
4). 查找数据
#查找数据
df[df.age == 26]
agenamesex
126nacymale
df[df.age > 26]
agenamesex
236bettyfemal
#脱字符取反
df[~(df.age > 26)]
agenamesex
014jackmale
126nacymale
#多条件查找:与
df[(df.age > 20)&(df.name=='nacy')]
agenamesex
126nacymale
#多条件查找:或
df[(df.age > 30)|(df.name=='jack')]
agenamesex
014jackmale
236bettyfemal
#查找函数query
df.query("(age > 20)&(name=='nacy')")
agenamesex
126nacymale
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值