pandas自动创建文件夹_pandas快速入门

pandas有两类数据对象:dataframe和series。Series是一个带标签的一维数组,通常索引在左,值在右。dataframe是一个带标签的二维数组,可以理解成series的字典,共用索引标签。重点记录dataframe的相关用法:

一.创建dataframe

1.如下图所示,主要是要Dataframe方法结合numpy函数可快速创建,以下演示了三种不同的创建方法:

#1.创建dataframe格式

import pandas as pd

import numpy as np

df1=pd.DataFrame(np.random.randn(4,4),index=np.arange(4),columns=list('ABCD'))

df2=pd.DataFrame(np.arange(16).reshape(4,4),index=[1,2,3,4],columns=["A","B","C","D"])

df3=pd.DataFrame({"A":1,"B":2,"C":pd.date_range('20200201',periods=4),"D":pd.Series(1,index=[1,2,3,4])})

打印结果

二.查看数据

#查看数据

df1.head(1) #1查看头部第一行数据

df1.dtypes #2查看列类型

df2.columns #2查看列名

df2.to_numpy() #3用numpy方法快速查看数据

df2.describe() #4查看统计摘要

df2.T #5行列互换,转置

df2.sort_index(axis=1,ascending=False) #6按列轴大小排序

df2.sort_values(by="B") #7按列的B轴数值大小排序

1.首尾数据:head()/tail()

df1.head(1) / df1.tail(2)

2.显示索引、列名、列类型

df1.index / df1.columns / df1.dtypes

个人觉得:查看列类型在数据清洗中应该会用的比较多

image

3.查看列表数据:df2.to_numpy()

可以快速浏览dataframe对象中底层numpy数据,以numpy格式输出

4.查看统计摘要:describe()

包含NAN值统计概要,以描述数据离散和形状。其中表示所在列的:count数量,mean为均值,std为标准差,min最小值,max:最小值,20%、50%、75%为20、50、75的百分位数,50%也可以理解为中位数。

image

5.转置数据:

df2.T: 行列数据互换

image

6.按轴排序

df1.sort_index(axis=1,ascending=False)

即将表格的数据按照行、列轴上数值的大小排序后展示,当axis=1时,表示按照列轴排序,axis=0时,表示按照行轴排序,ascending为False表示按照倒序排列。

image

7.按值排序

df2.sort_values(by="B")

表示按照B轴的数值大小排序,默认为正序,可通过ascending设置倒序

image

三.筛选数据

1.按列筛选

筛选整列:df2['A'] df2.A 筛选两列:df2[['A','D']]

2.按切片筛选(按行筛选)

筛选行数据:df2[:2] ,它与标签筛选的区别在于不包含该结束点,如本例,只包行0,1的行的数据,不包含2的数据。 而标签会包行节点数据。

#按列和切片筛选数据

df2['A'] #1.按筛选列A的数据

df2[['A','D']] #1.按筛选列A、D的数据

print(df2[2:3]) #2.按索引行位置2的筛选数据

print(df2.loc[2:3])#3.用loc标签按索引行位置2、3筛选数据

image

3.按标签筛选(按行筛选)

筛选行数据:df2.loc[2:3]

筛选某几行某几列数据:df2.loc[2:3,['A','B']]

返回降维数据:df2.loc[1,['A','B']]

提取标量值:df2.loc[index2[0],'A'],其中可以将index理解为一个series。

#按标签筛选

print(df2.loc[2:3,['A','B']]) #3.用loc标签按索引行位置2、3和列A、B筛选数据

print(df2.loc[1,['A','B']]) #3.用loc标签按索引行位置1和列A、B筛选数据,返回Series一维数据

A = df2.A #df2.A与df2["A"]方法等价

print(df2.loc[A[2],'A']) #3.提取标量值,用df2.A中的标量4数据,用loc标签按索引行位置4和列A的数据,返回该位置的标量值

image

4.布尔型筛选

布尔型筛选主要是将True值的内容筛选出来,下列两例,分别是逻辑符号、isin识别数值、字符串类型的方法。

#布尔索引

df2[df2.A>8] #4.返回df2.A>8布尔值为True的筛选结果数据

df2['E']=list('jsky') #对df2中的E行赋值

df2[df2['E'].isin(list('ky'))] #4.isin函数返回字符串匹配的布尔值为True的结果

image

5.位置筛选

主要使用iloc标签通过行列不同的位置切片获取到自己期望的数据,如下:

筛选某行数据:df2.iloc[:2]

筛选某行某列数据:df2.iloc[:2,0:2]

筛选具体的数值:df2.iloc[1,1]或df2.iat[1,1]

#位置索引

print(df2.iloc[:2]) #5.筛选索引行位置0、1的数据

print(df2.iloc[:2,0:2]) #5.筛选索引行位置0、1,列位置0、1的数据

print(df2.iloc[1,1]) #5.筛选索引行位置1,列位置1的数据

print(df2.iat[1,1]) #5.筛选索引行位置1,列位置1的数据

image

四、赋值

#赋值

df2['E']="K" #按列赋值

df2.iloc[0,0]=1000 #按位置赋值

df2.at[df2.index[0],"B"]=2000 #按标签赋值

通过将数据筛选出来后,进行赋值,如下例子:

image

五、缺失值

常见的缺失值处理有两种方法:忽略缺失值dropna,对缺失值重新赋值fillna.下面将通过reindex方法创建一个新的dataframe用于练习缺失值的处理,如图所示。(reindex:重建索引可更改、输出、添加指定轴索引,返回数据副本,不更改原数据)

忽略缺失值:df4.dropna(how='any')

缺失值重新赋值:df4.fillna('5')

#缺失值

df4=df2.reindex(index=[0,1,2,3,4,5],columns=list(df2.columns)+['E'])

df4.loc[1:3,'E']=1

df4.dropna(how='any')#忽略任何一行缺失值数据

df4.fillna('5')#对含有缺失值的数据重新赋值

df4.isna()#布尔关系

image

六、运算

一般情况下,运算时排除缺失值;运算时,axis默认为0,表示按列计算;axis=1表示按行计算,pandas自动沿指定维度广播。以mean(均值)和sum(求和)为例。

#运算

print(df2.mean())

df2.sum(axis=1)

image

函数名称

说明

pd.mean()

pd.mean(0)或axis=0默认表示把dataframe的列和求平均,按行扩展;pd.mean(1)表示把dataframe的行和求平均;skipna:统计时是否排除缺失值,默认值为True

pd.sum()

pd.sum(0)默认表示把dataframe的列求和,按行扩展pd.sum(1)默认表示把dataframe的行求和

pd.count()

非NA值的数量,0表示各列计数;1表示各行的计数值

Pd.describe()

针对Series或各dataframe列计算汇总统计

pd.min()/pd.max()

最小值或最大值,0表示各列的最大值,1表示各行的最大值

pd.idxmin()/pd.idxmax()

获得到最小值或最大值的索引值,0表示各列,1表示各行

pd.quantile()

样本的分位数,0表示各列,1表示各行

pd.median()

值的算术中位数(50%分位数,2分位数,中位数),0表示各列,1表示各行

pd.mad()

根据平均值计算绝对离差,0表示各列,1表示各行

pd.var()/pd.std()

样本值的方差/标准差,0表示各列,1表示各行

pd.cumsum()

默认按照行累加,即计算当前行与前面所有行之和

七、函数Apply

apply方法应用numpy自带的函数,自定义的函数等,其中axis默认为0表示按行计算,按列广播;axis=1表示按列计算,按行广播。按详见以下案例:

#函数

print(df2.apply(lambda X: X.max()-1,axis=1))

df2.apply(np.cumsum)

df2.cumsum(axis=1)

image

其中cumsum为按行累加,等价于df2.cumsum()方法,表示计算当前行与前面所有行之和。图上例子表示的正是按行累加,按列广播的效果。

八、直方图

直方图在统计学里表示数据的分布的趋势,通常用它来表示数据的变化趋势,在pandas中可以用value_counts()来表示series数据的出现频次,用mode()表示series和dataframe中的不重复的数据。

image

image

九、字符串的处理

1.字符串类型的定义:使用astype("string")方法,或在创建pandas对象时定义,如:dtype="string"或dtype=pd.StringDtype()

2.常见的字符串的处理有:str方法只适合series数据

去除空格【str.strip()、str.lstrip()、str.rstrip()】,大小写转换【str.lower()、str.upper()】,

字符串长度【str.len()】、统计字符串a出现的次数【str.count("a")】,是否是数字的布尔判断【str.isdigt()】、是否与某个字符串a匹配的布尔判断【str.match("a")】

十、合并(concat/merge/append)

1.结合-concat

把多串数组或Series组合在一起,成为dataframe

#合并-结合concat

df4=pd.DataFrame(np.random.randn(10,4))

pieces=[df4[:3],df4[3:7]]

pd.concat(pieces)

image

2.连接-merge

将两个表的数据连接在一起,有点像sql中的inner..join..的用法,根据连接关键字段将两个表的数据连接一起呈现,如下图所示

#连接join用法-merge,有点类似数据库的跨表查询

left=pd.DataFrame({"name":['Amily',"Jack"],"Country":["US","Canada"],"year":[12,22]})

right=pd.DataFrame({'name':["Amily","Amily"],"join_time":['2020-01-02',"2020-02-01"]})

print(left,"\n\n",right)

pd.merge(left,right,on="name")

image

3.追加-append

将一个数组,series或dataframe表格添加到另外一个dataframe表格上,如下图所示,注意:当数组和series追加是添加行数据,按照列的位置填入,若有超出的列或不足的列位置,用NA(np.nan、none)表示;当追加的数据是dataframe时,将会匹配列名,若无法匹配,则直接添加为新列,如下图所示

#追加append

df4.append(df2["B"])

df4.append(df2[["B","C"]])

image

十一、分组(groupby)

通过groupby()可以将dataframe中的某一列按类别分组,结合运算函数比如sum(),count()等函数就可以实现将表格按照分组计算的功能

image

十二、重塑和堆叠(stack)

Dataframe具有多重索引的功能,利用MultiIndexf方法可定义多个索引。而stack是将DataFrame的列标签压缩为行标签,unstack()而是将多个行标签转换为列标签,其中unstack(0),unstack(1)表示从顶级行标签到末级行标签进行转换。

image

image

十三、数据透视表

运用pd.pivot_table()方法可以对二维数据中的数据,按照需求快速建立新表,进行按照各维度快速分类计算,结合运算函数的方法,以便更好的了解数据规律。其中values为透视表中用来作为计算和展示的数据。

image

十四、时间序列(timeseries)

主要通过pd.to_timedate和pd.date_range将普通数据转化为时间类型的数据,生成时间类型的标量数据,在pandas中进行时间相关的计算。简单用法如下:

#转化其他类型的数据为时间戳

t1=pd.to_datetime(['2010-01-10','Jul 31, 2009','2020/10/1'])

t2=pd.to_datetime(pd.Series(['2020-02-10','Jul 31, 2009','2020/10/1']))

t3=pd.to_datetime("2020.10.1")

#date_range的defalut-freq

t12=pd.date_range(start="2020-01-01",periods=10)

十五、类别型(Categoricals)

1.astype("category):创建类别型的series数据

2.series.cat.categories:修改现有series中的类别名称

3.series.cat.set_categories:生成新的series类别名称

4.sort_values排序,是按照生成类别时的位置顺序来排的

4.groupby按类分组,如果空值的类也会显示出来,显示为0,如图

#类别型数据

#astype("category")创建类型数据

df=pd.DataFrame({"id":[1,2,3,4,5,6],

"raw_grade":["a","a","b","b","b","d"]})

#1.创建新的grade类,并对这个新的类按照raw_grade赋值,并将数据类型改

df["grade"]=df['raw_grade'].astype('category') 为category类型

print(df["grade"]) #打印该列出来,可以看到dtype为category类型,及其具体的类型值 :Categories (3, object): [a, b, d]

#2.修改类型数据中的分类名称

df["grade"].cat.categories=["very good","good","very bad"] #series.cat.categories对grade列中的类别名称进行重定义

#3.建立grade1列使用Series.cat.set_categories方法将建立新类

df["grade1"]=df["grade"].cat.set_categories(["very bad","bad","very good","good"])

print(df["grade1"])#筛选该列series出来有4类,即定义的4类:Categories (4, object): [very bad, bad, very good, good]

#4.这里排序,是按照生成类别时的位置顺序来排的

print(df.sort_values(by="grade1") )

#5.分组的类如果有控制也会显示出来,显示为0

print(df.groupby("grade1").count())

用法打印结果

十六、可视化(plot)

#可视化

ts=pd.Series(np.random.randn(1000),index=pd.date_range("2018.01.01",periods=1000))

ts=ts.cumsum()

ts.plot() #plot绘制series的图形

#Dataframe绘制plot图表

df10=pd.DataFrame(np.random.randn(1000,4),index=pd.date_range("2018.01.01",periods=1000),columns=list("ABCD"))

df10 = df10.cumsum()

df10.plot()

Series和dataframe使用plot生成的图形

十七、数据输入 / 输出

1.CSV文件的读写:

#读取 CSV 文件数据:

pd.read_csv('foo.csv')

#写入CSV文件:

df10.to_csv('foo.csv')

2.Excel文件的读写:

#读取 Excel文件数据:

pd.read_excel('foo.xlsx',“sheet1”,index_col=None, na_values=['NA'])

#写入Excel文件:

df10.to_excel('foo.xlsx', sheet_name='Sheet1')

3.读取HDF5文件:HDF5是一种跨平台数据储存文件

#读取 HDF5文件数据:

pd.read_hdf('foo.h5', 'df')

#写入HDF5文件:

df.to_hdf('foo.h5', 'df')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小数分数转换c语言,这是把小数转换成分数的程序,可是输入0.6666无限循环

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include int main(){double a;scanf("%lf", &a);输入小数int b, c 0, d 0;double b1 a;do{b1 *10;b (int)b1;printf("%d\n", b);if(b%10!0){c;if(d>0){c d;d 0;}}else{d;}}while(d<5);printf("…

血栓清道夫机器人_血栓“清道夫”找到了!木耳排第三,排在第一很多人都并不知道...

当血液中出现大量的血栓&#xff0c;很容易堵塞血管&#xff0c;多处血栓&#xff0c;主要是由于血液中积聚了大量的脂类物质&#xff0c;沉积在血管内壁上形成的&#xff0c;而日常生活中不良的饮食习惯则会加剧我们血液的粘稠程度&#xff0c;大量的直流物质&#xff0c;更容…

for循环c语言流水灯,巧用数组与for循环为流水灯程序瘦身

数组——一种储存大量同性质数据的连续存储器空间a [6];b [] {2&#xff0c;4&#xff0c;8&#xff0c;3&#xff0c;6};c[6] {1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6};char d[6] "hello";以上方式均是数组创建的常用方式~数组是从…

java的map 使用string数组多了双引号_奥奥奥利给!!!再也不怕面试官问我String源码了!来吧...

简述字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了String 类来创建和操作字符串。字符串缓冲区支持可变字符串。因为String对象是不可变的&#xff0c;因此可以共享它们。String类代表字符串&#xff0c;Java程序中的所有字符串字…

C 语言 运算符怎么使用,详解C++编程中运算符的使用

C的运算符十分丰富&#xff0c;使得C的运算十分灵活方便。例如把赋值号()也作为运算符处理&#xff0c;这样&#xff0c;abc4就是合法的表达式&#xff0c;这是与其他语言不同的。C提供了以下运算符&#xff1a;算术运算符(加) -(减) *(乘) /(除) %(整除求余) (自加) --(…

面积积分_袁颖妍:用定理积分求平面区域面积(有代表性的9个例题)

考研竞赛智慧e数学的广告&#xff1a;鸡汤所谓“理解”&#xff0c;所谓“智商”&#xff0c;本质上最终都归到"记忆",还有一点就是能够发现自己“记忆”中各个零散的知识点的关系。所谓“智商”高低的人&#xff0c;其实是强化这些“记忆”的能力的不同&#xff0c;…

vip会员管理系统c语言,路西牌会员管理系统。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼void VIP::show( Node *v){no(v);char *aVIP::sex(v);std::cout<<< "会员姓名: "<< node.item.num[1]<< endl<< "性别: "<< sex(v)<<< "手机号码: "<…

字体选择_十分钟带你掌握精准选择字体的方法!

文章序言&#xff1a;上次记得有粉丝评论需要讲讲字体&#xff0c;今天就给大家带来一期关于&#xff0c;如何快速选择合适的字体的文章&#xff0c;帮助大家以后把字体用对&#xff0c;用好&#xff0c;用准。在讲这个字体的时候会结合实际的案例操作给大家讲解&#xff0c;这…

c语言输出行末不得有多于空格,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

php对象数组转数组_php 数组对象互相转换

有时候会遇到php中对象和数组之间的互相转换/*** 将对象转换为多维数组***/function objectToArray($d) {if (is_object($d)) {// Gets the properties of the given object// with get_object_vars function$d get_object_vars($d);}if (is_array($d)) {/** Return array con…

linux 查看neihe版本_linux查看系统内核版本号

查看系统内核有三种方法&#xff1a;第一种方法&#xff1a;[rootlocalhost nginx]# uname -aLinux localhost.localdomain 2.6.32-696.30.1.el6.i686 #1 SMP Tue May 22 02:54:00 UTC 2018 i686 i686 i386 GNU/Linux第二种方法&#xff1a;uname -r[rootlocalhost nginx]# una…

android自动生成cardview,学习使用Material Design控件(三)使用CardView实现卡片效果...

本文主要介绍CardView的使用&#xff0c;CardView是继承自FrameLayout&#xff0c;使用比较简单&#xff0c;只需要用CardView包含其他View就可以实现卡片效果了。实现效果如下&#xff1a;加入依赖库dependencies {….compile com.android.support:cardview-v7:22.2.0}Layout布…

p6000 深度学习_英伟达推Quadro新显卡,支持VR、深度学习等技术

青亭网(ID:qingtinwang)--链接科技前沿&#xff0c;服务商业创新英伟达今天宣布了一系列的Quadro产品&#xff0c;全部都是基于他们的Pascal架构。能够让桌面级工作站转换为跨越多个产业、具备专业工作流突破性能的超级电脑。包括设计、工程和其他领域的工作流都在急速发展&…

android最新设计规范,Android应用未来的设计规范

谷歌在2014 I/O大会上不但发布了Android L&#xff0c;还一同推出了全新的Material Design设计语言&#xff0c;它被认为是未来Android系统和应用的设计方向。虽然Android L和谷歌自家的应用都会按照这一设计规范来执行&#xff0c;但第三方应用却没能够积极的响应。究竟用Mate…

react实现上传文件进度条功能_React.js 可拖放文件的上传表单(支持多文件和进度显示)...

JavaScript语言&#xff1a;JaveScriptBabelCoffeeScript确定console.clear();const {createClass,PropTypes} React;const {render} ReactDOM;const styles {inputWrapper: input-wrapper,inputCover: input-cover,helpText: help-text,fileName: file-name,fileNameStretc…

qt android程序联网死机,Qt for Android(九) ——APP 崩溃卡死拉起保活实战

这篇文章要基于前面的基础&#xff0c;我们才能继续下面的内容&#xff0c;建议阅读。背景首先&#xff0c;本文的案例环境基于一些特殊的 android 设备&#xff0c;比如瑞星微的RK系列&#xff0c;在该设备上不会熄屏&#xff0c;没有锁屏键&#xff0c;运行的应用也仅限于几个…

rootfs 制作ubuntu_Ubuntu12笔记: 基于busybox的Linux小系统制作

开发环境&#xff1a;Ubuntu 12.04开发板&#xff1a;mini2440256M NandFlash 64M SDRAM交叉编译器&#xff1a;arm-linux-gcc 4.4.3点此可下载BusyBox版本&#xff1a;busybox-1.13.3点此可下载yaffs制作工具&#xff1a;mkyaffsimageyaffs2制作工具:mkyaffs2image(适合64M)、…

菜鸟教程android布局,Android菜鸟级教程

本文列举了一些网站的搜索引擎优化菜鸟级别的教程。  网站内容是搜索引擎优化的第一要素  1. 大量的原创内容能够...一个***的基本技能&#xff11;、***的精神态度是很重要的&#xff0c;但技术则更是重要。***的态度虽然是无可取代&#xff0c;随著新科技的发明和旧技术的…

python中csv模块是自带的吗_python csv模块 Python的CSV模块,怎么新建为添加模式

在python 3.5.2中csv模块怎么 安装首先打开cmd,Ctrl R快捷键。输入cmd,点击回车。在cmd命令窗口输入python&#xff0c;检查环境是否配置好。退出环境exit()。输入 pip install opencv-python点击回车安装。安装完成后提示安装成功。python csv在哪个模块python csv模块问题请…

android surfaceview camera,android – 如何在SurfaceView上显示相机预览?

要使用Camera2 API从相机显示预览,您应该执行以下步骤&#xff1a;>获得使用相机设备的权限>使用CameraManager打开与相机的连接准备表面预览>使用打开的相机设备和所需的曲面(它不仅可以包括预览曲面)创建CaptureSession> CaptureSession创建后,您需要创建并配置C…