当前位置: 首页 > article >正文

pandas外文文档快速入门

pandas资源可以在github中进行查询

特点:

1、基于numpy库进行开发

2、主要处理一维、二维的数据

3、可以处理sql,execl,时间表等复杂数据结构

导言
创建一维、二维表

创建的表格其实会和二维表很像

假设我们存储一些数据

其中,{}内使用的是python中的字典,则keys(name,age,sex)会被设置为列名。

对dataframe和series进行操作

需要操作的表 +对应的列+对应的函数

则可得:

表[   列   ]+函数():

一键计算功能

describe()方法:

#注意仅对数字类型的数据执行

未指定则是对所有数字类型的数据进行计算

也可以指定需要处理的

如何读写表格数据(sql、execl)
读操作:read_XXX()方法:csv, excel, sql, json, parquet, 

例子:

基础操作:

dataframe.head(nums)#读取前nums行

dataframe.tail(nums)#读取后nums行

dtypes,各列的数据类型

写操作:dataframe.to_XXX()

选择dataframe中的列/行
选择列

选择单列

name of dataframe【列名】

titanic["Age"]

选择多列

多列我们可以通过类比python中list中嵌套字典的用法

多列则可以写作:

age_sex = titanic[["Age", "Sex"]]
选择行

对数字类型进行比较

above_35 = titanic[titanic["Age"] > 35]

同样可以使用< <= != 等进行比较

类正则表达式的使用

isin

titanic[titanic["Pclass"].isin([2, 3])]

//例子中表示Pclass中在2或者3的例子

或者进行条件判断类似于上面

class_23 = titanic[(titanic["Pclass"] == 2) | (titanic["Pclass"] == 3)]
#使用|表示或
选择特定行和列
loc/iloc函数的使用:

loc(columns.case,columns.targets)

case表示筛选条件,targets表示需要被选出来的列

iloc()

通过确定我们需要选取的行列

titanic.iloc[9:25, 2:5]
选取第10到25行,3到5列的数据

注:可以通过iloc和loc进行数据改写。

plots  //此处的应用实际上是matplotlib的应用

即:快速构建图(使用了matplotlib.pyplot包)

1、pandas提供了快速建表的操作既,dataframe.plot默认为折线图。具体可以画什么图可以使用tab键进行查看

2、方法体内置subplots可以将图片分开生成

在现有表中插入新的列

格式:dataframe["#新的了列的名字"]=  (括号内是对新列的赋值)

1、可以基于另一个列进行赋值

air_quality["lopndon_mg_per_cubic"]
=air_quality["station_london"]*1.882
#基于“station_london”,对新的行进行赋值。

2、可以基于两列数据进行赋值(对两行可以进行四则运算)

air_quality["radio_paris_antwerp"]=(air_quality['station_paris']/air_quality['station_antwerp'])
air_quality.head()

3、基于rename方法对已有的列名进行重命名,

air_quality_rename=air_quality.rename
(columns={'station_paris':'i am all the range',
'station_antwerp':'i am athoic',
'station_london':'i am dark'})

air_quality_rename.head()
对数据的统计、汇总操作
汇总统计数据

3种方法

#只需要得出单个类型的结果

#以mean()为例,求出单列的平均数,类似的还有:max() min()等

In [5]: titanic[["Age", "Fare"]].median()  #代码

Out[5]:                                    #结果
Age     28.0000
Fare    14.4542
dtype: float64


#将所有用的上的类型都统计出来(describe方法)

In [6]: titanic[["Age", "Fare"]].describe()
Out[6]: 
              Age        Fare
count  714.000000  891.000000
mean    29.699118   32.204208
std     14.526497   49.693429
min      0.420000    0.000000
25%     20.125000    7.910400
50%     28.000000   14.454200
75%     38.000000   31.000000
max     80.000000  512.329200

#一次性给出多个需要的类型(此处可以不进行所有类型的计算,节省算力)
#使用agg函数可以写入内部
In [7]: titanic.agg(
   ...:     {
   ...:         "Age": ["min", "max", "median", "skew"],
   ...:         "Fare": ["min", "max", "median", "mean"],
   ...:     }
   ...: )
   ...: 
Out[7]: 
              Age        Fare
min      0.420000    0.000000
max     80.000000  512.329200
median  28.000000   14.454200
skew     0.389108         NaN
mean          NaN   32.204208



 对数据进行分类
groupby函数:会对所选列每个项创建一个分类组别

the groupby() method is applied on the Sex column to make a group per category.

输出分类后的数量。通过count()   or    value_count()    进行输出

如何重塑表格的布局
排序sort()方法

dataframe.sort_value(by=),   若为多个进行排序则需要用[]列表框住

从长到宽的格式

此步骤可以使我们更直观的观看某数据的详细

使用pivot()函数根据location为分类基础,value作为填入数值进行操作

如何整合多个表格
concat()函数

连接多个表的方法

在表内写入需要连接的表,可以在行列中进行选择合并,默认是axis=0(行合并)

下例进行了行合并

其中1110+2068刚好等于3178

concat中可以设置key来区分我们合并的数据

没设置key的

设置了key的

连接merge()函数

此处连接和sql语法中的左右连接差不多,

In [20]: air_quality = pd.merge(air_quality, stations_coord, how="left", on="location")
#连接了air_quality和station_coord两个表,left是左连接,依据的key是两个表都有的location


In [21]: air_quality.head()
Out[21]: 
                    date.utc  ... coordinates.longitude
0  2019-05-07 01:00:00+00:00  ...              -0.13193
1  2019-05-07 01:00:00+00:00  ...               2.39390
2  2019-05-07 01:00:00+00:00  ...               2.39390
3  2019-05-07 01:00:00+00:00  ...               4.43182
4  2019-05-07 01:00:00+00:00  ...               4.43182

[5 rows x 6 columns]

若左右两表的key不同则可以写成

In [24]: air_quality = pd.merge(air_quality, air_quality_parameters,
   ....:                        how='left', left_on='parameter', right_on='id')
   ....: 

In [25]: air_quality.head()
Out[25]: 
                    date.utc  ...   name
0  2019-05-07 01:00:00+00:00  ...    NO2
1  2019-05-07 01:00:00+00:00  ...    NO2
2  2019-05-07 01:00:00+00:00  ...    NO2
3  2019-05-07 01:00:00+00:00  ...  PM2.5
4  2019-05-07 01:00:00+00:00  ...    NO2

[5 rows x 9 columns]
操作时间序列数据
第一步:转变时间从string类型变为datetime类型:使用to_datetime()方法。
第二部进行操作:

操作部分方法

In [10]: air_quality["datetime"].max() - air_quality["datetime"].min()
Out[10]: Timedelta('44 days 23:00:00')

或者使用df函数。df函数可以具体指年月日等

In [11]: air_quality["month"] = air_quality["datetime"].dt.month

In [12]: air_quality.head()
Out[12]: 
    city country                  datetime  ... value   unit  month
0  Paris      FR 2019-06-21 00:00:00+00:00  ...  20.0  µg/m³      6
1  Paris      FR 2019-06-20 23:00:00+00:00  ...  21.8  µg/m³      6
2  Paris      FR 2019-06-20 22:00:00+00:00  ...  26.5  µg/m³      6
3  Paris      FR 2019-06-20 21:00:00+00:00  ...  24.9  µg/m³      6
4  Paris      FR 2019-06-20 20:00:00+00:00  ...  21.4  µg/m³      6

[5 rows x 8 columns]
与pivot结合的妙用

在此步中,我们将datetime设置为索引(通过时间可以得出一些关联的数据)

注:此处的datetime数据类型为datetime类型

使用dateframe.index.(查找的数据(年月日))

如:dateframe.index.year,用于查找年的

也可以通过dateframe["始值":"终值"]

查询这段时间的数据

改变时间频率resample()

在使用时,我们可以根据我们的需要将数据转换为自己需求的频率,如:你搜集的是按照小时计算的,我可以将他转换为按天计算等……


http://www.kler.cn/news/317729.html

相关文章:

  • UNet 眼底血管分割实战教程
  • Python Flask网页开发基本框架
  • 大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
  • 【Java面向对象高级06】static的应用知识:代码块
  • java开发jmeter采样器
  • 【AI写作】介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用
  • 目标检测任务中xml标签文件修改
  • 【学习笔记】Transformer架构探讨
  • [ IDE ] SEGGER Embedded Studio for RISC-V
  • C++初阶学习——探索STL奥秘——反向迭代器
  • [Leetcode 543][Easy]-二叉树的直径-递归
  • ubuntu安装StarQuant
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL22
  • 【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系
  • 高级java每日一道面试题-2024年9月20日-分布式篇-什么是CAP理论?
  • 【Java】Java开发全攻略:从环境搭建到高效编程
  • vulnhub-prime1
  • Android 检测图片抓拍, 聚焦图片后自动完成拍照,未对准图片的提示请将摄像头对准要拍照的图片
  • 红书 API 接口:笔记详情数据接口的接入与使用
  • IDEA 关闭自动补全功能(最新版本)
  • 【我的 PWN 学习手札】House of Botcake —— tcache key 绕过
  • 我从家庭提取的动态IP是独享的吗?
  • RK3568笔记六十二:使用V4L2读取摄像头并在LCD上显示
  • TypeScript-面向对象(接口、类、对象、泛型)
  • 1.5 计算机网络的性能指标
  • Git可视化工具和基础命令
  • vue3<script setup>中使用reactive包裹的对象被重新赋值失去响应式原因和解决方式
  • C#控件开发能够阅读的书籍
  • ESP8266+DHT11+Python制作一个物联网温湿度传感器
  • 基于C#+SQL Server2005(WinForm)图书管理系统