【python】numpy与pandas快速入门

本文介绍了Numpy和Pandas在数据分析中的核心作用,包括快速数组操作、内存效率、基本运算、索引技巧,以及Pandas DataFrame的创建、索引、数据读取和筛选。通过实例演示了如何利用这两个库进行数据处理和操作。
摘要由CSDN通过智能技术生成

官网

Numpy

简介

  • numpy与pandas是非常常用的库,后面会经常用到。
  • 如果使用anaconda的,可能已经自带了这2个包。
  • 如果提示没有此包的,使用conda或者pip或者anaconda navigator安装一下。
  • 正常来说,pandas是依赖numpy的
  • NumPy数组比Python列表更快,更紧凑。阵列消耗较少的内存,使用起来很方便。NumPy使用更少的内存来存储数据,并且提供了一种指定数据类型的机制。这使得代码可以进一步优化。
  • 需要查找更多库可以去 https://pypi.org/ 对标npmjs

引入

  • 通常我们会把numpy命名为np
import numpy as np

np数组

  • 制作你的第一个nparray:
 a = np.array([1, 2, 3, 4, 5, 6])
  • 这个输出跟普通的python数组没太大区别,但是你可以看见打印出来是个nparray的类,类似于js中的类数组:
print type(a)

py2:
<type ‘numpy.ndarray’>
py3:
<class ‘numpy.ndarray’>

  • 同样,可以做成n维数组:
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
  • 创建全是为0的数组:
>>> np.zeros(2)
array([0., 0.])
  • 创建全是1的数组
 np.ones(3)

array([1., 1., 1.])

  • 创建空数组(每个值会由内存的随机值填入)
np.empty(2)
  • 创建0-100的数组:
np.arange(100)

排序

arr = np.array([2, 1, 5, 3, 7, 4, 6, 8])
np.sort(arr)

array([1, 2, 3, 4, 5, 6, 7, 8])

  • https://numpy.org/doc/stable/reference/generated/numpy.sort.html#numpy.sort

合并

>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([5, 6, 7, 8])

array([1, 2, 3, 4, 5, 6, 7, 8])

重塑数组

>>> a = np.arange(6)
>>> print(a)
[0 1 2 3 4 5]
>>> b = a.reshape(3, 2)
>>> print(b)
[[0 1]
 [2 3]
 [4 5]]

基本运算

>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
>>> a<35
array([ True,  True, False, False])

索引

  • 除了正常通过中括号数字取,索引还支持数组:
a = np.arange(12)**2 
print a
i = np.array([1, 1, 3, 1, 5, 1]) 
print a[i]  

[ 0 1 4 9 16 25 36 49 64 81 100 121]
[ 1 1 9 1 25 1]

  • 可以使用py本来数组的操作来操作nparray
>>> data = np.array([1, 2, 3])
>>> data[1]
2
>>> data[0:2]
array([1, 2])
>>> data[1:]
array([2, 3])
>>> data[-2:]
array([2, 3])
  • 可以在里面进行计算:
>>> print(a[a < 5])
[1 2 3 4]

深拷贝

a = np.arange(12)**2 
d = a.copy()                          # a new array object with new data is created
d is a  #false

Pandas

简介

  • pandas主要处理类似于表格一样的结构:
    在这里插入图片描述
  • 每一列DataFrame都是一个Series

引入

  • 一般会叫它pd
 import pandas as pd

创建

  • 使用对象创建一个dataframe:
df = pd.DataFrame(
        {
           "Name": [
                "Braund, Mr. Owen Harris",
               "Allen, Mr. William Henry",
               "Bonnell, Miss. Elizabeth",
           ],
            "Age": [22, 35, 58],
            "Sex": ["male", "male", "female"],
        }
    )
print df

Age Name Sex
0 22 Braund, Mr. Owen Harris male
1 35 Allen, Mr. William Henry male
2 58 Bonnell, Miss. Elizabeth female

  • 创建series:
ages = pd.Series([22, 35, 58], name="Age")
  • series没有列标签,它只是相当于一列。

索引

  • 也可以通过索引获取series:
df["Age"]

Out[4]:
0 22
1 35
2 58
Name: Age, dtype: int64

  • 索引还可以使用iloc , loc , ix 。具体看https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#indexing-choice
  • 其中iloc会用的比较多:
titanic.iloc[9:25, 2:5]
  • 可以筛选出10到25行,3到5列的数据

读取数据

  • 我们可以很方便的从excel文件或者csv文件里获取数据转换成dataframe格式:
titanic = pd.read_csv("data/titanic.csv")
titanic.to_excel("titanic.xlsx", sheet_name="passengers", index=False)
titanic = pd.read_excel("titanic.xlsx", sheet_name="passengers")

筛选

  • 可以像操作数组一样去使用它
 above_35 = titanic[titanic["Age"] > 35]

合并

  • 可以把2个表粘在一个表上
air_quality = pd.concat([air_quality_pm25, air_quality_no2], axis=0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业火之理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值