pandas中文学习官网地址

https://www.pypandas.cn/

我自己用到的知识点汇总

基础版:

dates = pd.date_range('20130101', periods=6)  # rows index --6
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) # columns index --4
df['A'][dates[3]] # df[columns][rows] use index get item
df.sort_values(by='开发计划开始时间') # by后面是column列名,这是根据列里面是值进行排序。
df.tail(2) # 获取后面两条数据
df.head(2) # 获取前面两条数据 如下是两种取值方式,df[-1:]得到的是dataframe类型,用loc得到的是series类型,取的都是同样的数据,但是格式不同。
third_row = df[3:4]
type(third_row)
Out[117]: pandas.core.frame.DataFrame
third_row
Out[120]:
a b c
2013-01-04 0.31441 -0.379357 -0.508348
np_float_obj = third_row['a'][0] # 同下
third_row.iloc[0][0] # 这样就是拿到了real值,int,str,float等等之类的,可以用python直接操作 third_loc_row = df.loc[dates[3]]
type(third_loc_row)
Out[119]: pandas.core.series.Series
third_loc_row
Out[121]:
a 0.314410
b -0.379357
c -0.508348
Name: 2013-01-04 00:00:00, dtype: float64
np_float_obj = third_loc_row[0] # series类型支持索引直接取值,就跟list取值一样,拿到real值,用python操作。

进阶版:

pandas 二级列头转成一级列头
first_col_title = df.iloc[0] # 提取第一行列头
repeat_second_title = df.set_axis(first_col_title, axis=1, inplace=False) # 把第二行列头直接复制给第一行列头,第一行的原有列头就被删除了
reset_col_title_df = repeat_second_title.drop(index=0) # 再把重复的第一行跟第二行列头,任意删除一行即可,这里删除的第一行

在dataframe里面直接用坐标取值方法:df.iloc[0][0] df.loc['20130104':'20130105', ['A', 'B']] # 根据具体列名和行名来切片
df.iloc[3:5, 0:2] # 根据坐标来切片,同上得到一样的切片数据结果
df.iloc[[1, 2, 4], [0, 2]] # 行,列坐标分别取值
df.iloc[1:3, :] # ,前后分别是row,column坐标值
df.iloc[:, 1:3] # 同上
df.iloc[1,1]=df.iat[1,1]=df.iloc[1][1] # 这三种方法,得到的type以及value都是一样的。
df[df > 0] # 满足条件的值会显示出来,不满足条件的就是NaN补位 list(Series) # 可以把series转换成list类型
如下是赋值方法:
df.at[dates[0], 'A'] = 0
df.loc[0, 'A'] = 'hello'
df.iat[0, 1] = 2020
df.iloc[0, 0] = 2021
字符串方法:
s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
s[s.str.contains("g", na=True)] # contains过滤出来有‘g’的元素,如果遇到NaN给它赋值为True,过滤的时候保留,contains的参数可以是正则表达式 df = pd.DataFrame(np.random.randn(10, 4))
pieces = [df_merge[:3], df_merge[3:4], df_merge[8:]]
pd.concat(pieces) # 这里是把上面pieces的list里面的3个dataframe串联到一个dataframe里面
df.append(pieces) # 这里用到了append方法,df.append(pieces, ignore_index=True),就是把两个具有相同列的dataframe合并成一个dataframe,跟concat是一样的结果。 left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})
pd.merge(left, right, on='key') # 把两个dataframe合并,根据key列来合并到一个dataframe里面
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
s = df.iloc[3]
h_2 = df.head(2)
df.append(s, ignore_index=True)
df.append(h_2, ignore_index=True) # append可以追加Series也可以追加dataframe两种格式 df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
....: 'foo', 'bar', 'foo', 'foo'],
....: 'B': ['one', 'one', 'two', 'three',
....: 'two', 'two', 'one', 'three'],
....: 'C': np.random.randn(8),
....: 'D': np.random.randn(8)})
df.groupby('A').sum() # 根据A列分组,然后把分组的结果求和
df.groupby(['A', 'B']).sum() # 也可以根据多列分组,分别求和
df.columns # 获取的是一个类似这样的["name", "age"],表头列表,可以用索引取值,拿到每个表头字符串
df.iterrows() # 获取的是一个生成器,需要用next取值,或者循环取值,拿到每一列的数据,包括列的索引值,每列数据放在tuple里面
whole_df[whole_df['PCSID'].isin(
left_no_matched_whole_data
)
] # 拿到一列数据,去跟其他数据格式比对,匹配的结果,就拿到所有列的完整的dataFrame。 # df[(df["B"].map(lambda x: x >= "0.96_01")) & (
# df["A"].isin(["a1", ]) == False)] # 利用lambda函数来写自定义函数
pandas-dataframe-ffill功能可以填充合并单元格,前提是,没有这个参数-keep_default_na=False,就用这个参数它默认的值True即可.
如下,从dataframe里面,拿到name列,这列里面都是字符串,该列的每一个值都包含A-Za-z0-9元素,有11个满足此正则条件的元素。
df[df["name"].str.contains(r"[A-Za-z0-9]{11}")]
df = df[df["name"].str.startswith("J")==True] # 这里把name列里面所有J开头的元素,提取出来。同理endswith也适用,False就是取反向值
df["name"] = df["name"].str.replace("he", "she") # 这里是把name列值里面的指定字符串替换成你想要替换的字符串
dataFrame数据类型转换:df["a"].astype("string") # "object"|"float"|"int"|"bool", if the column got NaN|NaT|NAN .etc then turn type will failed dataFrame追加一行数据:append---df.append({"a":"hello", "b":"world"}, ignore_index=True) # df.index==["a", "b",] Pandas替换空值|缺失值,用fillna;df = df.fillan("")|df = df.fillna(0)
以上是把空值替换成空字符串或者0,此时是需要返回值的,因为它是在源数据基础上copy一份数据,进行替换。
df.fillan("", inplace=True) # 这是在源数据上进行替换,返回值就是None。 Pandas,把多个dataframe,连接成一个:根据指定列合并,外连接,把相同不相同的数据都保留拼接到一起,缺失的用空值代替。
from functools import reduce
df_li = [df1,df2,df3]
merge_df = reduce(lambda right, left:pandas.merge(right, left, how="outer", on="column_name"), df_li)

# 指定列顺序
from pandas.api.types import CategoricalDtype
cat_size_order = CategoricalDtype( ['XS', 'S', 'M', 'L', 'XL'], ordered=True )
df['size'] = df['size'].astype(cat_size_order)

下面是收藏的一个博客地址,转载的。关于给衣服尺寸,星期,月份,设置排序参数。

https://www.cnblogs.com/panchuangai/p/13907232.html

PS:我目前只是用到了pandas处理数据,还没有用到numpy,后续有numpy的需求,再补充进来。

pandas用到的知识点总结的更多相关文章

  1. pandas 几个重要知识点

    将 NaN 替换成某一数值 使用 fillna dataframe.fillna(value = 'xxx',inplace=True) 删除某一个值 使用 drop dataframe.drop(1 ...

  2. Pandas快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...

  3. pandas基础(2)_多重索引

    1:多重索引的构造 >>> #下面显示构造pd.MultiIndex >>> df1=DataFrame(np.random.randint(0,150,size= ...

  4. python基础全部知识点整理,超级全(20万字+)

    目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...

  5. scikit-learn的线性回归

    scikit-learn的线性回归预测Google股票 这是机器学习系列的第一篇文章. 本文将使用Python及scikit-learn的线性回归预测Google的股票走势.请千万别期望这个示例能够让 ...

  6. pyecharts各省人口GDP可视化分析

    版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82503569 9月9日更:本篇博客数据下载:链接:http ...

  7. 巩固复习(Hany驿站原创)_python的礼物

    Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https://www ...

  8. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  9. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  10. pandas知识点脑图汇总

    参考文献: [1]Pandas知识点脑图汇总

随机推荐

  1. win10系统每次重启桌面图标排列都会改动怎么办

    鼠标右键点击个性化>主题>找到桌面图标设置>把计算机 回收站 用户的文件 控制面板 网络等前面框复选框全部勾选掉,然后在桌面新建文件夹把桌面所有的图标剪切到新建文件里面,然后把新建文 ...

  2. 【azw3】麻省理工深度思考法:从模型及动力机制来思考现象

    书本详情 标题:麻省理工深度思考法:从模型及动力机制来思考现象作者:[日]平井孝志 著:张玉虹 译年份:2018出版社:北京:中国华侨出版社ISBN:9787511373441,7511373445格 ...

  3. 浅谈Atlassian产品搭建的敏捷管理体系(一)概述

    准备把敏捷管理的专题在今年完成,主要谈一下Atlassian的实践,先做一下搬运工,讲去年写的两篇弄过来. Dream big, work smart, deliver fast 使用Atlassia ...

  4. windows系统mysql8.0.20.0踩坑(-)

    首先, 下载mysql-installer-web-community-8.0.20.0.msi 一步一步安装下来,一切看起来如此美好 cmd运行mysqld --install 但发现net sta ...

  5. linux与windows互通

    https://www.cnblogs.com/zhouby/p/10724149.html

  6. FTP主动模式(Port)和被动模式(Passive)的区别

    1.FTP的PORT(主动模式): PORT中文称为主动模式,工作的原理: FTP客户端(1024以上端口)连接到FTP服务器的21端口,发送用户名和密码登录, 登录成功后要list列表或者读取数据时 ...

  7. java轻量级锁、重量级锁、可重入锁、偏向锁、自旋锁的概念

    1.重量级锁 作为互斥同步的方式,是最基础的锁,其他的锁都是为了减少开销做的优化,重量级锁借助了monitor 对象,monitor对象中有三个区域,分别是entity site. owner和wai ...

  8. 关于protobuf报错'tr1/unordered_map' file not found

    这个问题的话,查了很多资料,总的来说就是C++版本的问题,新版本的namespace结构变化了,C++库的层级结构变化了 1.config.h HASH_MAP_H    HASH_SET_H 新版本 ...

  9. 【java】MVC模式和三层架构

    MVC是一种分层开发的模式 M:Model,业务模型,处理业务,存储数据,获取数据.JavaBean对象 V:  View , 视图,界面展示,展示数据.JSP或HTML C: Controller, ...

  10. PIL修改图像

    PIL修改图像 像素:最小物理单元 pixel 分辨率:1024*980 可以表征 图像分辨率 或者350dpi 每英寸 350个dot表征分辨率 调整图像分辨率 from PIL import Im ...