pandas模块使用

Series一维数据,由索引和列组成

pandas.Series(data,index,dtype,name,copy)

参数说明:

data:一组数据(ndarray 类型)。

index:数据索引标签,如果不指定,默认从 0 开始。

dtype:数据类型,默认会自己判断。

name:设置名称。

copy:拷贝数据,默认为 False。

一维数据基本用法

import pandas as pd
a=[1,2,3]
data=pd.Series(a)
#重新定义索引,
data=pd.Series(a,index=['x','y','z'])
#给这个一维数据起名字
data=pd.Series(a,name='series_way')

DATaFrame二维表格

表格形的二维数据结构,含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。他既有行索引也有列索引,可以看作由series组成的字典。且组成的方式可以用字典包列表,列表包字典都可以。

DataFrame构造方法

pandas.DataFrame(data,index,cloumns,dtyp,copy)

参数说明

  • data:一组数据(字典,列表,series等类型)
  • index: 索引值,也可以称为行标签
  • columns:列标签,默认(0,1,2…n)
  • dtype:数据类型,默认
  • copy: 拷贝数据,默认为False

列表套列表创建

import pandas as pd
data=[['list1',10],['list2',12],['list3',13]]
dframe=pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print(df)

字典套列表创建(即ndarrays,他们的长度必须相同)

import pandas as pd
#key即列名,value用列表代替,每个value的列表长度一样
data={'Name':['list1','list2','list3'],'Age':['11','12','13']}
df=pd.DataFrame(data)
print(df)

列表套字典创建

这个方法不建议采用,太冗余繁琐,列数据太多就很麻烦

import pandas as pd
data=[{'Name':'list1','Age':'11'},{'Name':'list2','Age':'12','Sex':'男'}]
#这其中没有对应的数据则为None
df=pd.DataFrame(data)
print(df)

loc[]函数:获取指定的行数据

#没有设置指定索引
import pandas as pd
data=[{'Name':'list1','Age':'11'},{'Name':'list2','Age':'12','Sex':'男'}]
#这其中没有对应的数据则为None
df=pd.DataFrame(data)
print(loc[0])
print(loc[1])
#上述依次返回指定的第一行,第二行内容
print(loc[[0,1]])
#同理

#设置指定索引
df=pd.DataFrame(data,index=['x','y'])
print(loc['x'])

DataFrame相关函数

ignore_index,忽略index索引不显示(仅用于append方法中)

	data=[{'01':'你好'},{'02':'bu'}]
    df=pd.DataFrame(data)
    df=df.append({'03':'1'},ignore_inde=True)
    print(df)

append可添加新列的新的一行也可以添加旧列的新的一行
结果
在这里插入图片描述

不加的结果
在这里插入图片描述

reset_index()设置新的索引,不用旧索引

	data=[{'01':'你好'},{'02':'bu'}]
    df=pd.DataFrame(data)
    #添加drop参数为True
    df=df.reset_index(drop=True)
    print(df)

操作CSV文件

import pandas as pd
#读取csv文件为DataFrame表格
df=pd.read_csv('nba.csv')
#to_string()用于返回DataFrame类型的数据,如果不使用该函数,则输出结果为数据的前五行和末尾五行,中间以...代替
print(df.to_string())

to_csv存储为csv文件

import pandas as pd
#key即列名,value用列表代替,每个value的列表长度一样
data={'Name':['list1','list2','list3'],'Age':['11','12','13']}
df=pd.DataFrame(data)
#存储为csv文件
df.to_csv('reboot.csv')

head,tail读取文件前面,末尾内容。info()

df.head(n),n是行数,tail同理
df.info(),返回dataframe基本信息

设置表格宽度方法

#设置表格宽度
pd.set_option('display.width', 500)

results.append()

data={'Name':['list1','list2','list3'],'Age':['11','12','13']}
df=pd.DataFrame(data)
results.append(df,ignore_index=True)
#ignore_index=True避免索引重复,默认为False。

reset_index()

在这里插入代码片

Pandas Json

Json是javascribts对象表示法。类似XML,比XML更小更快,更容易解析,
pandas可以更好的处理json数据

简单读取文件方法

df=pd.read_json(文件名,encoding='gbk')
#不加转码可能报错,反正我报错了。
print(df.to_string())
#to_string()用于处理dataframe这样的数据,也可以直接打印不使用此方法

直接data变量存储json格式数据

df=pd.DataFrame(data)

同理使用字典作为类json数据,来存储也可以。上面series有提到,相比dataframe就是多加一列即可

data={
	"cloi1":{"row1":1,"row2":2,"row":3},
	"cloi2":{"row1":1,"row2":2,"row":3}
}
df=pd.DataFrame(data)
print(df)

从url来读取json文件

url= 'https://static.runoob.com/download/sites.json'
df=pd.read_json(url)
print(df)

读取嵌套的json内容,使用dataframe格式展现


“‘
test_add.json文件内容
 "school_name": "ABC primary school",
    "class": "Year 1",
    "students": []
”’
#test_add.json是一个内嵌的json文本,

    #首先读取json数据,不使用dataframe形式,使用json文本需要json模块
    with open('test_add.json','r') as f :
        data=json.loads(f.read())
        # print(data)
    #展现内嵌的数据使用json_normalize模块,record_path指向的是内嵌字典的值对应的k
    df=pd.json_normalize(data,record_path=['students'])
    print(df)

展现元数据即school_name和class的内容,需要用到meta参数

df=pd.json_normalize(data,record_payj=['students'],meta=['school_name','class'])
#即会对students的列加上两列school_name和class,其内容每行都是相同的。

在这里插入图片描述

假如元数据是一个字典里嵌套字典的数据。

#例如school_name={
"address":{"city":{"celphone":"13249898"},"area":"江夏"}, 
"name":{"xing":"li"}
}
#取celphone,xing的值为列名和内容,
meta=[['school_name','address','city','celphone'],['school_name','name','xing']]

结果
在这里插入图片描述

使用glom模块来便捷处理json中字典嵌套的内容

glom模块可以使用.来访问内嵌对象的属性

jsonfile={
    "school_name": "local primary school",
    "class": "Year 1",
    "students": [
    {
        "id": "A001",
        "name": "Tom",
        "grade": {
            "math": 60,
            "physics": 66,
            "chemistry": 61
        }

    },
    {
        "id": "A002",
        "name": "James",
        "grade": {
            "math": 89,
            "physics": 76,
            "chemistry": 51
        }

    },
    {
        "id": "A003",
        "name": "Jenny",
        "grade": {
            "math": 79,
            "physics": 90,
            "chemistry": 78
        }
    }]
}
    df=pd.DataFrame(jsonfile)
    data_math=df['students'].apply(lambda row: glom(row,'grade.math'))
    print(data_math)

在这里插入图片描述

继续更新。。。。。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值