Study:day07—Numpy科学计算与Pandas数据分析

Study:day07—Numpy科学计算与Pandas数据分析

  • Pandas中的基本数据结构
    • Series:
    • DataFrame
  • 两种数据格式的构建
    • 可以通过pd.Series或者pd.DataFrame将列表,元组,字典构建为Series或者DataFrame
    • 关于DataFrame的构建
  • Pandas中IO操作:
    • 读操作:读取read_csv/excel/html
    • 写操作:to_csv/excel/dict/json/list/array/markdown/latex

本周内容:

  • pandas当中数据的增删改查[核心]
  • pandas当中的常见统计函数
  • pandas的SAC操作[核心]:
    • S篇: 主要是分组的一些功能
    • A篇: Apply应用篇
      • A: agg聚合操作
      • T: Transform转换操作
      • F: Filter过滤操作
      • 其他操作: map/apply
    • C篇: 关于数据合并
      • concat: 将多个表按行或者按列进行合并
      • merge: 按字段合并
  • pandas当中关于时序数据的处理[核心]:
    • 什么是时序数据
    • 时序数据的转换
    • 时序数据的提取
  • 数据清洗操作[核心]:
    • 重复值处理
    • 缺失值处理
    • 异常值处理
    • 数据标准化
    • 离散数据连续化
    • 连续数据离散化

1.1 Pandas 当中的数据查询

import pandas as pd
import numpy as np
import sys

print('Python version:', sys.version)
print('Pandas version:', pd.__version__)
print('Numpy version:', np.__version__)
Python version: 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:56) [MSC v.1929 64 bit (AMD64)]
Pandas version: 2.2.2
Numpy version: 1.26.4
data = pd.read_csv("./data/beijing_tianqi_2018.csv")
data.head()  # 查看数据前五行
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2018-01-00 3℃ -6℃ 晴~多云 东北风 2 59 2
1 2018-01-01 3℃ -6℃ 晴~多云 东北风 1-2级 59 2
2 2018-01-02 2℃ -5℃ 阴~多云 东北风 1-2级 49 1
3 2018-01-03 2℃ -5℃ 多云 北风 1-2级 28 1
4 2018-01-04 0℃ -8℃ 东北风 1-2级 28 1
  • 通过df[列名]获取指定列名对应列的值
  • 通过df[列名列表] 获取指定列对应的值
  • 可以通过loc方法按照行列名称的标签进行查询
  • 可以通过iloc方法按照行列标签的索引进行查询

基础查询

# 通过df列名获取指定列名对应列的值
# 通过df[列名列表] 获取指定列对应的值
data['tianqi']  # 获取天气这一列
data[["tianqi", "aqi"]]  # 获取tianqi和aqi这两列数据

使用loc查询

# data.loc  # 可以根据行列标签的名称进行查询
data.loc[0, "ymd"]  # 根据行列标签查询指定的值
data.loc[[0, 1, 2], ['ymd', 'bWendu', 'yWendu']]  # 可以查询多行多列
data.loc[:2, :'yWendu']  # 可以查询多行多列,开头可以通过切片省略
  • 练习
    1.查询前五行,后四列所有内容
    2.查询tianqi,aqi,aqiInfo这三列内容,其中关于2018-01-04,2018-01-05这两天的数据
data.loc[:5, 'fengli':]
data.loc[4:5, ['tianqi', 'aqi', 'aqiInfo']]

使用iloc查询

data.iloc[9, 6]  # 查询第十行,第7列的内容
data.iloc[0:5, :5]  # 通过切牌您查询,出入切片对应的索引值即可,查询前五行和前五列
data.iloc[::2, 1::2]  # 查询所有奇数行偶数列的信息

1.1.1 根据条件查询

  • data[条件表达式]:通过条件表达式查询数据
  • data[(条件1) & (条件2)…]:同时满足多个条件的数据
  • data[(条件1) | (条件2)…]:满足一个条件的数据
  • 可以使用函数进行查询
    • def 定义的关键字
    • lambda 匿名函数的使用
  • df.loc # 根据行列标签的值进行查询
  • df.iloc # 根据行列索引值进行查询
data[data['aqi'] > 50]  # 查询aqi大于50的数据
data[data['aqiInfo'] == '优']  # 查询aqiInfo为优的数据
data[data['ymd'].str.startswith('2018-09')]  # 找到2018年9月份的天气
data[(data['fengxiang'] == '东北风') & (data['aqi'] > 50)]
data.loc[(data['aqi'] > 100) | (data['aqiInfo'] == '轻度污染')]  # 同样也支持条件表达式
  • 白天温度大于15度的天气
  • 白天温度在16-20度之间,且aqiInfo等于优的天气
# 数据的修改
data['bWendu'] = data['bWendu'].str.strip('℃').astype(int)
data['yWendu'] = data['yWendu'].str.strip('℃').astype(int)
data.loc[(data['bWendu'] > 16) & (data['bWendu'] < 20) & (data['aqiInfo'] == '优')]
data.loc[lambda data: (data['bWendu'] < 20) & (data['bWendu'] > 16)]  # 使用lambda 匿名函数
# 可以使用apply+lambda函数,优化上述方法
data[(data['bWendu'].apply(lambda x: 16 < x < 20)) & (data['aqiInfo'] == '优')]
ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
113 2018-04-23 19 9 多云 东北风 3-4级 34 1
273 2018-09-30 19 13 多云 西北风 4-5级 22 1
283 2018-10-10 17 4 多云~晴 西北风 1-2级 25 1
284 2018-10-11 18 5 晴~多云 北风 1-2级 30 1
291 2018-10-18 18 5 南风 1-2级 49 1
296 2018-10-23 19 4 西南风 3-4级 37 1
300 2018-10-27 17 5 多云 西南风 1-2级 33 1
301 2018-10-28 17 4 多云~晴 西北风 4-5级 32 1
304 2018-10-31 17 3 西南风 1-2级 47 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值