Pandas 学习总结

目录

一、数据结构

1、创建series

2、获取series以及切片

3、Series的基本属性

4、读取数据

5、DataFrame的基本属性

6、创建DataFrame

7、列的操作

8、索引操作

9、loc、iloc

二、相关操作

1、算数方法表

2、pandas里的axis的理解

3、排序

4、处理缺失值

5、读取文本

6、处理重复值

7、映射

8、数据替换

9、离散化和面元划分

10、随机

11、数据连接

12、聚类

一、数据结构

1、创建series

    data = pd.Series([5, 4, 3, 2, 1])
    data = pd.Series(np.arange(1, 6),index=['a','b','c','d','e'])
    dict = {"name": "Jack", "age": 12, "sex": "male"}
    data = pd.Series(dict, index=['name', "age", "sex"])

2、获取series以及切片

获取

s1[0]  # 通过索引来获取
s1['name']  # 通过字典名来获取

切片获取

s1[['name','age']]  # 获取键名为name和age的数据
s1[[1,3]]   # 获取索引为1和3的数据
s1[1:3]   # 获取范围[1,3)的数据,左闭右开
s1["name":"sex"]   # 获取键名为'name'到'sex'的数据,左闭右也是闭区间

布尔索引

s1[(s1>2) | (s12   # 大于二的数据返回True,否则返回False

3、Series的基本属性

属性 说明

Series.name对象名Series.index.name对象索引名

4、读取数据

方法 描述

head()默认为前5行,可传入需要前几行的参数的数字,如head(3)前3行tail()默认为末5行,可传入需要末几行的参数的数字,如tail(3)末3行

5、DataFrame的基本属性

属性 说明

.index查看行索引.column查看列索引.values查看值.T转置矩阵.is_unique判断是否唯一.value_counts()计算每个值出现的次数.isin()

判断是否有该元素

df.isin([8,2])判断是否有8或者2。

.info()查看基本信息

6、创建DataFrame

data = np.arange(12).reshape(3, 4)
frame = pd.DataFrame(data, index=['A', 'B', 'C'], columns=['first', 'second', 'third', 'forth'])
index设置行索引,columns设置列索引

frame = pd.DataFrame({'a': pd.Series(np.arange(3)),'b': pd.Series(np.arange(3, 5))})

data = {
    'a': {"apple": 3.6, "banana": 5.6},
    'b': {'apple': 3, 'banana': 6},
    'c': {"apple": 4.5}
}
frame = pd.DataFrame(data)

7、列的操作

    df = pd.DataFrame(np.arange(9).reshape(3, 3), index=['a', 'b', 'c'], columns=['A', 'B', 'C'])
    print(df['A'])  # 查看列
    df['D'] = [1, 2, 3]  # 添加列
    print(df)
    del (df['D'])  # 删除列
    print(df)

8、索引操作

创建一个符合新索引的新对象:

df2 = df1.reindex(['a','b','c','d'])  # 行索引重新创建

df3 = df1.reindex(columns=['A','B','C'])  # 列索引重新创建
如果df1里存在对应索引就会赋值为对应的值,若没有则对应位置赋值为NAN

Pandas 学习总结

Pandas 学习总结

https://www.bbsmax.com/A/xl56kX1kdr/

增加索引

df.loc['d',:] = [1, 2, 3]  # 行索引
df.loc['d'] = [1, 2, 3]  # 行索引

df2 = df1.insert(0, 'E', [1, 1, 1])  # 在0的列索引前传入名字为E的列数据
df.loc[:,'D'] = [4, 5, 6]  # 列索引
会在原有基础上进行添加新的索引行

下面是返回添加后的数据的数组,不会影响原本的值
row={'A':1, 'B':2, 'C':3}
df1 = df1.append(row, ignore_index=True)  # 添加行

删除索引

    df = pd.DataFrame(np.arange(9).reshape(3, 3), index=['a', 'b', 'c'], columns=['A', 'B', 'C'])
    del df['A']  # 删除列
    df = df.drop('a')  # 删除行
    df.drop('B', axis=1, inplace=True)  #删除列或者axis="columns",inplace=True时代表会直接修改原数据
    print(df)

修改索引

print(df['A']=[9, 8, 7])
或者
print(df.A=[9, 8, 7])
修改列索引

print(df.loc['a']=9)
修改行索引

print(df.loc['a', 'A']=1000)
精准赋值到行和列

查看索引:见前面的切片

9、loc、iloc

df.loc['a':'c']  # a到c的行
df.loc['a':'c','C']  # 第一个是行索引,第二个是列索引,切片方式类似
df.loc[df > 2]  # bool条件索引查看,查看到对应的series对象

iloc和loc使用基本一致,不同在于iloc是基于编号来索引的
df.iloc[0:7, 3:7]   # 第一个是行索引,第二个是列索引,切片方式类似
df.iloc[df > 2]

ix

二、相关操作

1、算数方法表

函数 描述

add, radd

+

df1.add(df2,fill_value=0)#df1加df2,nan的值填充为0,但不能将都为nan的缺失值填充。radd表示反转相加。

sub, rsub-div, rdiv/floordiv, rflordiv//mul, rmulpow, rpow*apply

自定义方法,

df.apply(lambda x:x.max(),axis=1)

详解见:

pandas中的map()、apply()、applymap()函数的区别 – Data_worker – 博客园

.sum计算和,如:df.sum(axis=1, skipna=False)设置skipna=False后会将有nan的位置计算为nan。.idxmax获取最大值的索引.cumsum累加求和.describe获取计算的各项值

2、pandas里的axis的理解

axis=0代表操作行

axis=1代表操作列

3、排序

函数 描述

sort_index按序号排序,默认按行排,默认升序,ascending=False设置为降序,axis=1按列排序。sort_values

按值排序,缺失值会默认排在最后,

df.sort_values(by=[‘A’, ‘B’])会按照A进行排序,之后按照B进行排序。

.take(indexes)按索引来显示数据

4、处理缺失值

函数 描述

.isnull()判断是否存在缺失值.notnull()判断是否不为缺失值dropna()删除缺失值,默认丢弃行,axis=1丢弃列fillna()填充缺失值,如fillna(-1.)所有nan都会被填充为-1

5、读取文本

深入理解pandas读取excel,txt,csv文件等命令 – 梦想橡皮擦 – 博客园

6、处理重复值

.duplicated()

每行是否重复若之后出现了重复的则返回True否则返回False

如df.duplicated()返回True和False组成的Series对象

.drop_duplicates()

删除重复的数据

如df.drop_duplicates()会返回一个没有重复数据的对象

也可以案例判断重复:

df.drop_duplicates([‘k1’])这样设置就能只删除k1列上重复的数据了,而不影响其他列。

也可以加入属性keep=’last’就会保留最后一个数据。

7、映射

Pandas教程 | 数据处理三板斧——map、apply、applymap详解 – 知乎

8、数据替换

.replace([old],new)

替换数据

多个替换

如:加100替换为0,-999替换为nan

写法1:df.replace([100,-999],[0,np.nan])

写法2:df.replace({100:0,-999:np.nan})

执行效果一样。

返回值。

9、离散化和面元划分

.cut(data,bins)

数据分段,data为数据,bins为区间数组。

也可以设置right属性默认为True,设置为False表示左闭右开。

labels可以设置面元名称。

precision=2设置小数位数位后两位。

pd.value_counts(arr)面元计数

Pandas 学习总结

Pandas 学习总结

Pandas 学习总结

10、随机

.random.permutation(6)如果参数为6则会产生[0,6)范围整数的随机数.sample(n=3)从数据中随机抽取n条数据,也可以设置重复抽取设置replace=True。

11、数据连接

pd.merge(left,right)

返回数据连接后的数据,默认以重叠的列为键连接。

也可以手动设置连接键on=[‘key’,’key2′],how=’outer’设置连接方式。

[Python3]pandas.merge用法详解_Asher117的博客-CSDN博客_pandas.merge

left.join(right)
pandas入门: 数据合并之–join – 知乎

pd.concat()
pandas中concat()的用法 – 知乎

12、聚类

df.groupby(by=”key”)

聚类

pandas聚合和分组运算之groupby – wqbin – 博客园

Original: https://blog.csdn.net/qq_50909707/article/details/122628925
Author: Dragon Wu
Title: Pandas 学习总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/698809/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球