pandas数据分析总结

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。其中DataFrame,Json,数据筛选的使用频次很高,值得重点将基本用法学习并总结。

版本信息:python 3.7  pandas 1.3.5

一、DataFrame

DataFrame 是一个表格型的数据结构,可以被看做由 Series 组成的字典(共同用一个索引)

data = {
    "calories": [420, 380, 390],
    "duration": [50, 40, 45]
    }
df = pd.DataFrame(data)
#返回第一行和第二行
print(df.loc[0,1])

二、JSON截取

nested_list.json 文件内容
{
    "school_name": "ABC primary school",
    "class": "Year 1",
    "students": [
    {
        "id": "A001",
        "name": "Tom",
        "math": 60,
        "physics": 66,
        "chemistry": 61
    },
    {
        "id": "A002",
        "name": "James",
        "math": 89,
        "physics": 76,
        "chemistry": 51
    },
    {
        "id": "A003",
        "name": "Jenny",
        "math": 79,
        "physics": 90,
        "chemistry": 78
    }]
}

对于以上有嵌套的json格式,如果我只需要读取student中的math字段的所有记录;有两种方式,

1、使用read_json将记录读取出来,再用DataFrame截取;

2、使用json_normalize直接截取。

import pandas as pd
import json
import glom

第一种方式:
#需安装pip3 install glom,glom 模块允许我们使用 . 来访问内嵌对象的属性。
df = pd.read_json('nested_list.json')
data = df['students'].apply(lambda row: glom(row, 'grade.math'))


第二种方式:
# 使用 Python JSON 模块载入数据
with open('nested_list.json','r') as f:
    data = json.loads(f.read())

# 展平数据
df_nested_list = pd.json_normalize(data, record_path =['students'])
# 还可以使用 meta 参数来显示其他的元数据
df_nested_list = pd.json_normalize(data, record_path =['students'],meta=['class'])
print(df_nested_list)

三、数据筛选:

1、清洗空值:DataFrame.dropna

2、替换空值:DataFrame.fillna

3、清洗重复数据:DataFrame.duplicated

其中可使用参数如下:

  • axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
  • how:默认为 'any' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all' 一行(或列)都是 NA 才去掉这整行。
  • thresh:设置需要多少非空值的数据才可以保留下来的。
  • subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
  • inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

应用场景:

#1、某一列ST_NUM,dropna清除空值,inplace = True修改dataframe
df.dropna(subset=['ST_NUM'], inplace = True)

#2、列PID,空值填充123456,inplace = True修改dataframe
df['PID'].fillna(12345, inplace = True)

#3、修改第2行,age列的数据
df.loc[2, 'age'] = 30 # 

#4、删除重复数据
df.drop_duplicates(inplace = True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个高效工作的家伙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值