一、pandas介绍

参考文章:https://blog.csdn.net/qq_42415326/article/details/89678833
1:Pandas 看作是 Python 版的 excel
2: 分类

  • Series:一维数组
  • DataFrame:二维的表格型数据结构

3:安装

pip install pandas
import pandas

二、Series

1.使用
pandas.Series( data, index, dtype, name, copy)
               数据, 行标签
2.生成表
import pandas
# ():列表
a = ['zhangsan', 18, 'sex', 'play games']
name = ['姓名', '年龄', '性别', '爱好']
data = pandas.Series(a, name)
print(data)

# (二):字典
b = {'name': 'lisi', 'age': 14, 'sex': 'man', 'hobby': 'listen jay'}
datab = pandas.Series(b)
print(datab)
# 1:读取数据,  索引/[]/. 都可以
print(datab[0])
print(datab['sex'])
print(datab.hobby)

在这里插入图片描述

3:简单计算
# 2:计算
series1 = pandas.Series([20, 20, 40], ['chine', 'math', 'eng'])
series2 = pandas.Series([10, 30, 60], ['chine', 'math', 'music'])
print(series1 + series2)
print(series1 - series2)

在这里插入图片描述

三、DateFrame

1.使用

首先,二维数据

pandas.DataFrame( data, index, columns, dtype, copy)
                  数据,行标签,列标签,数据类型统一
2:生成表
#():二维数组
a = [['zhangsan',10,'man','school1'],['lisi',11,'man','school2'],['wamgwu',12,'man','school1']]
data = pandas.DataFrame(a, index=['qq','ww','ee'], columns=['name','age','sex','school'])
print(data)
#(二)ndarray
b = {'name':['zs','ls','ww'], 'age':[11,12,13], 'sex':['man','women','man']}
datab = pandas.DataFrame(b)
print(datab)
#(三)字典
c=[{'name':'zs','age':11,'school':'school1'},{'name':'ls','age':12,'school':'school1'}]
datac = pandas.DataFrame(c)
print(datac)

在这里插入图片描述
①:行名称和列名称
data.index
data.columns

2:行列 loc[]

区别:是否 使用loc

  • 单行:loc[]
  • 多行:loc[[ ]]
  • 行与列:loc[[‘行’],[‘列’]]
  • 列:直接调用 []

1:显示数据

#读取数据
print(data.loc['qq']) #一行数据
print(data.loc[['qq','ww'],['name','age']]) #多条行与列数据
print(data.loc[['qq','ee']])      #多行
print(data[['name','sex']])       #多列数据

2:增加数据

#添加一行
data.loc['rr'] = ['zhaoliu',13,'women','school2']

#添加一列
data['count'] = pandas.Series([30,40,50,60], index=['rr','ee','ww','qq'])
data['sum'] = data['age']+10

3:删除数据,drop
原数据不变
参数:字段名,+ 行axis=0 列axis=1 永久删:inplace=True

# 删除数据
data_drop = data.drop('school', axis=1)

data_drop1 = data_drop.drop('ee', axis=0)

4:筛选数据
data[]

data[data[‘age’]>=11]

5:重置索引 set_index(‘xxx’)


3:缺失、空值 dropna()

①:删除 dropna()
②: 填充 fillna(0)

4:分组统计 groupby()

先分组groupby() ,再求和,平均数,中位数,标准差
1:单个

#分组统计 平均值mean() 个数count()  最小值min() max()  中位median()众数mode() 
#[]指定某一项
pingjun = data.groupby('school').mean()['score']
count = data.groupby('school').count()[['sex','age']]

2:汇总 describe()

descri = data.groupby('school').describe()   #汇总
descri_shu = data.groupby('school').describe().transpose() #竖着方便看

3:连接concat()
concat([data1, data2], axis=0)

5:多个表的连接join()

1: join() 同行
在这里插入图片描述
在这里插入图片描述


2:merge() 同列
在这里插入图片描述

四、常用方法

1:唯一值 unique()
#查找唯一的值和个数
val = data['score'].unique()    #值的列表
print(val)       
count = data['score'].nunique()   #唯一值的个数
print(count)    
val_count = data['score'].value_counts()  #值-个数
print(val_count)  
2:数据处理 apply()

格式:apply(函数())

#lambda格式   参数:计算结果为返回值
data1 = data['score'].apply(lambda x:str(x)+'分数')
data['score'] = data1               #保存修改后的结果
print(data)

在这里插入图片描述

3:排序 sort_values()

data.sort_values(‘score’)

4: 查找空值 isnull()

data.isnull()
结果:boolean

5: 时间格式 to_datetime()

data[‘Date’] = data.to_datetime(data[‘Date’])

5:汇总统计表pivot_table()

本质:对每列值的操作

pandas.pivot_table(data, values='', index=[''], columns=['']) 

#values  列的值加减等计算
#index   行: 按列的值分组 
#columns 列: 列的值分组

原始table
在这里插入图片描述

animals = pandas.DataFrame(data)
table = animals.pivot_table(values='d', index=['a','b'], columns=['c'])
print(table)

分组之后
在这里插入图片描述
在这里插入图片描述

五、导入文件

1:csv文件

读取:read_csv() toString()返回完整数据
写入:to_csv()

import os
print(os.getcwd())    #获取文件的当前路径

#csv文件的读取与写入   
csv_file = pandas.read_csv('./Spider/spiders/nba.csv')
print(csv_file.to_string())

在这里插入图片描述

#导出csv, index=0,1忽略
csv_file.to_csv('./Spider/spiders/a.csv', index=False)
2:json 文件

①:读取文件

json_file= pandas.read_json('sites.json')
print(json_file.to_string())

②:从url中读取json数据

data = pandas.read_json(url)
print(data)
③:json_normalize

1:将JSON数据规范化为table表
2:

 studentList = {
    "school_name": "ABC primary school",
    "class": "Year 1",
    "detail":{"aid":123, "count":3, "data":[{
        "id": "A001","name": "Tom","math": 60},{
        "id": "A002","name": "James","math": 89},{
        "id": "A003", "name": "Jenny","math": 79}]}}
        
#record_path:数据, meta:其他列, errors:数据缺失默认为NaN
dataList = pandas.json_normalize(studentList, record_path=['detail','data'], meta=['school_name','class',['一级','下一级']], errors='ignore')
print(dataList)

在这里插入图片描述

3:嵌套表示
在这里插入图片描述

3:excel文件
#excel文件的读取与写入
excel_file = pandas.read_excel('./Spider/spiders/pand.xlsx', sheet_name='Sheet1')
print(excel_file.fillna(' '))

excel_file.to_excel('./Spider/spiders/b.xlsx', sheet_name='sheet1', index=False)

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐