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()
在使用时,我们可以根据我们的需要将数据转换为自己需求的频率,如:你搜集的是按照小时计算的,我可以将他转换为按天计算等……