03.Python代码Pandas - DataFrame全系列分享(使用.特点.说明.增删改查.功能函数/统计函数)

03.Python代码Pandas - DataFrame全系列分享(使用.特点.说明.取值.函数)
说明:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(知识点不会跳跃),如果晦涩难懂会使用大白话帮助理解(能大量节约您的时间)。

所有文章都不会直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~

python语法-pandas第三节 :DataFrame全系列分享(使用.特点.说明.取值.函数)




DataFrame是什么

DataFrame 是一个表格型的数据结构
有一组有序的列,其他每列可以是不同的值类型(数值、字符串、布尔型值)。
DataFrame 既有索引(公共的)也有索引(series的名字),它可以被看做由 若干的Series 组成的字典(每个Series 共同用一个索引
大白话:一张数据表格就是DataFrame(DataFrame 它本来也是表格型的数据结构) 。有序的列就是这个表格的索引,其他的就是数据,其他的列是Series 组成的
长这样:
在这里插入图片描述

Series 本身就有很多功能,Series详细,请看链接: 02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数)

DataFrame有一个公共列(最左边那个,取值的索引)和若干个Series(数据)组成的表格型数据。加上DataFrame自己又很多的功能,所以对于实际使用数据分析等等 就非常的方便。
DataFrame就变成了: 又能存随便存 又能算 又能分析
表格形式的DataFrame可以存 :
一个班级的数据,一个部门员工的数据,一个商家的数据,一个商铺的数据。。。。存不下?业务复杂?那就还可以通过代码,分别取出几个不同的DataFrame来组合分析。
如果还是不懂怎么存的,没事:(可以点目录查看取值案例,另外还有一个取值的额外分享篇文章。就模拟了很多不同的数据,且演示了取值)

使用语法

字典格式数据

import pandas as pd

#准备数据  字典格式  目前是两组 k-v :  name和number
mydata = {
    #name为key  一个列表为value
    'name':['bangbangzhi','hello','python'],
    'number':[1,2,3]
}
#将字典格式数据交给pandas 声明为DataFrame
myDf01 = pd.DataFrame(mydata)
print(myDf01)

#DataFrame是表格型的,key是列名。value是列里面的数据。
#目前代码写了两列数据。
#没有指定索引列,DataFrame会默认数字从0开始来帮我们生成一个有序索引取值用

在这里插入图片描述

列表格式数据

01.列表里面都是列表:每个列表就为一行数据。如:运行后图片

#准备数据  列表
listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名 dtype=指定数据类型  额外演示知识点:您生成DataFrame要指定类型
myDf02 = pd.DataFrame(listData,columns=['name','number'],dtype=float)

print(myDf02)

#列表数据里面全是数据本身。所以DataFrame()方法,需要多一个参数columns来指定列名(它是表格)。
#dtype= 是统一指定声明好DataFrame后的数据类型
#dtype=此处是语法分享,是否需要转类型,看实际情况

在这里插入图片描述

它提示我:
sys:1: FutureWarning: Could not cast to float64, falling back to object.
因为我演示转数据类型语法。这个提示的意思是:当你尝试将一个不能被转换为float64的数据类型(如:字符串)。这个操作可能会导致数据丢失或类型错误。因为Python无法将这些非数字字符串转换为数字,所以它只能将它们转换为object类型。

这个FutureWarning报错提示,我另一个做了非常详细的分析报错文章,从直译中文理解报错,到演示各种出这个报错的不同案例,一路分析到多种不同呢解决方案。文章为 :FutureWarning

02.列表里面都是字典:每个字典的key就是一列。最好保证字典里面的key都是相同单词,不然一个key就是一列不会整合一起。如:运行后图片

#声明一个列表,里面是字典
#注意,这里故意演示了: 空值。除了字典格式生成DataFrame , 那个c还只有一个数据
dData = [{'a':1,'bangbangzhi':2},{'a':100,'bangbangzhi':200,'c':10}]
#因为字典的key就是列名,所以现在没有指定列名
myDf03 =  pd.DataFrame(dData)

print(myDf03)

#最后生成的是一个表格DataFrame
#没有数据的位置,用Nan填充
#如果每个字典的key 单词都不一样,那您的DataFrame就有很多很多列,不会合并

在这里插入图片描述

当前的案例是演示:不同数据类型去声明一个DataFrame。配合下面的内容来掌握使用很多操作DataFrame的方法。但是一般情况:

数据是外部的,且都很多。不会代码里面自己手动填写数据
那么请查阅:
(本来写 使用语法 这里一起的,篇幅太多太长了。最后决定拆出来单独写一遍,单独一篇就额外加内容,详细一点,目前正在上传官方审核 ing)

csv文件操作: csv导入DataFrame

json格式导入DataFrame: json格式导入DataFrame

execl导入DataFrame(正在上传ing)

不过我们可以通过自定义一些简单的数据,来学习演示DataFrame的各种方法及功能函数


完整声明语法

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

··data:DataFrame 的数据部分,可以是字典、二维数组、Series、DataFrame 或其他可转换为 DataFrame 的对象。如果不提供此参数,则创建一个空的 DataFrame。

··index:DataFrame 的行索引,用于标识每行数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的从0开始的整数索引。

··columns:DataFrame 的列索引(表头),用于标识每列数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。

··dtype:指定 DataFrame 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型。

··copy:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据。常用:有时数据分析可能会更改原始值,看情况是否允许,要么改了就改了。要么还是copy复制一份,这次算的数据是这次的数据分析,下次或者别人还要用原始数据接着算其他的


查:取值/访问/使用数据

直接用[列名][行索引] 取值就行了,
也可以:使用列名作为属性通过 .loc[]、.iloc[] 来访问,也可以使用标签或位置索引。。
如:

import pandas as pd

listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf03 = pd.DataFrame(listData,columns=['name','number'])
print(myDf03)#输出一个表格格式的数据
print("隔开一下")
# 通过列名访问
print(myDf03['name'])#就仅仅输出这一列的数据
# 访问单个元素
print(myDf03['name'][0])#bangbangzhi  name列的第1个数据(索引从0开始取值)
# 通过 .loc[] 访问
#.loc[ 行索引  , 列索引]
print(myDf03.loc[0, 'name'])#bangbangzhi  第1行的name列(索引从0开始取值)
# 通过 .iloc[] 访问
# .iloc[行位置,列位置]
print(myDf03.iloc[0, 1])   #1     第1行 第2列   (索引从0开始取值)

.loc[]、.iloc[] 具体的操作及详细语义和语法的说明,请查阅:
一共三种,很多案例且非常详细: DataFrame取值详细分享:.loc[]、.iloc[]

帮帮志@csdn


改:修改某值及添加新的列

修改某值及添加新的列—语法很像

import pandas as pd

listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf04 = pd.DataFrame(listData,columns=['name','number'])
print(myDf04)#输出一个表格格式的数据
print("隔开一下")
#修改数据 直接给原有的列赋值新数据就可以了
myDf04['number'] = [100,200,300] #把number列的数据修改了
#原先不存在的列,直接写新的列名赋值数据,就可以添加一列
myDf04['New列'] = [111, 222, 333]
print(myDf04)

在这里插入图片描述

增:添加新的数据

loc方法

可以添加新的

import pandas as pd

listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf05 = pd.DataFrame(listData,columns=['name','number'])
print(myDf05)#输出一个表格格式的数据
print("隔开一下")

##当前两列数据 这个列表也两个数据
myDf05.loc[3] = ['我是新的行,且顺序和列的个数保持一致', 4] 
print(myDf05)

在这里插入图片描述

append 方法

添加新行在末尾,已被弃用

concat方法

合并多个DataFrame (官方推荐方法)
添加新的数据,先把新的数据在生成一个DataFrame,在使用concat合并即可

import pandas as pd
#
listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf06 = pd.DataFrame(listData,columns=['name','number'])

listData02 = [['我是新的数据',9],['我先捣鼓成DataFrame',10]]
#列名保持一致,毕竟要合并
myDf07 = pd.DataFrame(listData02,columns=['name','number'])

#concat([原有, 新的])   新的会添加到原有的后面 (数据排序问题,第一个参数内容会在上面)
myDf06 = pd.concat([myDf06, myDf07], ignore_index=True)
print(myDf06)

帮帮志 csdn


删:各种删

import pandas as pd
#
listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf07 = pd.DataFrame(listData,columns=['name','number'])
#删除name列
df_new = myDf07.drop('name', axis=1)
print(df_new)
print("隔开一下")
df_other = df_new.drop(0)  # 删除索引为 0 的行
print(df_other)

在这里插入图片描述


DataFrame 全部 功能 函数

方法名称功能描述
head(n)返回 DataFrame 的前 n 行数据(默认前 5 行)
tail(n)返回 DataFrame 的后 n 行数据(默认后 5 行)
info()显示 DataFrame 的简要信息,包括列名、数据类型、非空值数量等
describe()返回 DataFrame 数值列的统计信息,如均值、标准差、最小值等
shape返回 DataFrame 的行数和列数(行数, 列数)
columns返回 DataFrame 的所有列名
index返回 DataFrame 的行索引
dtypes返回每一列的数值数据类型
sort_values(by)按照指定列排序
sort_index()按行索引排序
dropna()删除含有缺失值(NaN)的行或列
fillna(value)用指定的值填充缺失值
isnull()判断缺失值,返回一个布尔值 DataFrame
notnull()判断非缺失值,返回一个布尔值 DataFrame
loc[]按标签索引选择数据
iloc[]按位置索引选择数据
at[]访问 DataFrame 中单个元素(比 loc[] 更高效)
iat[]访问 DataFrame 中单个元素(比 iloc[] 更高效)
apply(func)对 DataFrame 或 Series 应用一个函数
applymap(func)对 DataFrame 的每个元素应用函数(仅对 DataFrame)
groupby(by)分组操作,用于按某一列分组进行汇总统计
pivot_table()创建透视表
merge()合并多个 DataFrame(类似 SQL 的 JOIN 操作)
concat()按行或按列连接多个 DataFrame
to_csv()将 DataFrame 导出为 CSV 文件
to_excel()将 DataFrame 导出为 Excel 文件
to_json()将 DataFrame 导出为 JSON 格式
to_sql()将 DataFrame 导出为 SQL 数据库
query()使用 SQL 风格的语法查询 DataFrame
duplicated()返回布尔值 DataFrame,指示每行是否是重复的
drop_duplicates()删除重复的行
set_index()设置 DataFrame 的索引
reset_index()重置 DataFrame 的索引
transpose()转置 DataFrame(行列交换)

函数案例分享文章 单独复制走了(太多了),此处仅仅可以查阅功能。正在上传ing~


DataFrame 全部 统计 函数

import pandas as pd

listData = [['bangbangzhi',1],['hello',2],['python',3]]
#将列表交给pd声明DataFrame
#columns=指定列名
myDf08 = pd.DataFrame(listData,columns=['name','number'])

print(myDf08.shape)     # 形状
print(myDf08.columns)   # 列名
print(myDf08.index)     # 索引
print(myDf08.head())    # 前几行数据,默认是前 5 行
print(myDf08.tail())    # 后几行数据,默认是后 5 行
print(myDf08.info())    # 数据信息
#数字运算的 标记对应的数字列(不然汉字/字符串哪来的 计算嘛)
print(myDf08['number'].describe())# 描述统计信息  
print(myDf08['number'].mean())    # 求平均值
print(myDf08['number'].sum())     # 求和
print(myDf08['number'].max())     # 最大值
print(myDf08['number'].min())     # 最小值

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值