十分钟掌握Pandas(上)——来自官网API
2021-01-26 21:17
标签:exp comm data false 大型 操作 contain head ble 其实不止10分钟,这么多,至少一天 numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍。 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。 pandas可以导入csv数据集 从第一个date开始,获取6个连续日期 np.random.randn(6,4) 获取6行4列数据集 index是列 columns是行 依次为:总数、均值、标准差、最小值、25%的值、50%的值、75%的值、最大值 结果多一列E 十分钟掌握Pandas(上)——来自官网API 标签:exp comm data false 大型 操作 contain head ble 原文地址:https://www.cnblogs.com/littlepage/p/11964838.html十分钟掌握Pandas(上)——来自官网API
一、numpy和pandas
二、数据类型
numpy
pandas
ndArray相当于n维矩阵
Series(类似一维数组,或者kv值对)
在numpy中只有ndArray一种,但是ndArray有很多种数据类型
DataFrame(使用csv读入数据是dataFrame)
二、官网API
1.API之前,我们应该学习数据导入
import pandas as pd
?
food_info = pd.read_csv("xxx.csv")
print(type(food_info))
print(food_info)2.pd.Series 获取一个Series类型
import numpy as np
import pandas as pd
# 我们可以发现,这边可以使用numpy,证明pandas是基于numpy构建的
s = pd.Series([1,3,5,np.nan,6,8])
print(s)打印
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float643.获取日期
dates = pd.date_range(‘20130101‘,periods=6)
dates打印
DatetimeIndex([‘2013-01-01‘, ‘2013-01-02‘, ‘2013-01-03‘, ‘2013-01-04‘,
‘2013-01-05‘, ‘2013-01-06‘],
dtype=‘datetime64[ns]‘, freq=‘D‘)4.第一次使用dataframe类型
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list(‘ABCD‘))
df打印结果
A B C D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.9161215.查看数据类型
df2.dtypes
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object6.查看前两行
df.head(2)
A B C D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.8932607.查看尾三行
df.tail(3)
A B C D
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.9161218.查看索引(行名)
df.index
DatetimeIndex([‘2013-01-01‘, ‘2013-01-02‘, ‘2013-01-03‘, ‘2013-01-04‘,
‘2013-01-05‘, ‘2013-01-06‘],
dtype=‘datetime64[ns]‘, freq=‘D‘)9.查看列名
df.columns
Index([‘A‘, ‘B‘, ‘C‘, ‘D‘], dtype=‘object‘)
10.转化为numpy类型的数组
df.to_numpy()
array([[ 0.28468077, 1.8813276 , 0.31042514, -2.52732926],
[-0.20972286, -1.41018638, 0.86533622, 0.89325968],
[-0.09557804, 0.57628249, -1.34705203, -0.05537029],
[-1.21652719, 0.42374501, -1.11066844, -1.6824053 ],
[ 0.27550116, -0.84445705, -0.95463056, 2.31257796],
[-1.38455249, 1.53925476, -1.49907627, -0.91612064]])11.查看描述
df.describe()
A B C D
count 6.000000 6.000000 6.000000 6.000000
mean -0.391033 0.360994 -0.622611 -0.329231
std 0.733423 1.291526 0.972213 1.763848
min -1.384552 -1.410186 -1.499076 -2.527329
25% -0.964826 -0.527407 -1.287956 -1.490834
50% -0.152650 0.500014 -1.032650 -0.485745
75% 0.182731 1.298512 -0.005839 0.656102
max 0.284681 1.881328 0.865336 2.31257812.转置矩阵
df.T
2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06
A 0.284681 -0.209723 -0.095578 -1.216527 0.275501 -1.384552
B 1.881328 -1.410186 0.576282 0.423745 -0.844457 1.539255
C 0.310425 0.865336 -1.347052 -1.110668 -0.954631 -1.499076
D -2.527329 0.893260 -0.055370 -1.682405 2.312578 -0.91612113.索引排序,按照维度为一(即横坐标),排序,升序为false
df.sort_index(axis=1,ascending=False)
?
D C B A
2013-01-01 -2.527329 0.310425 1.881328 0.284681
2013-01-02 0.893260 0.865336 -1.410186 -0.209723
2013-01-03 -0.055370 -1.347052 0.576282 -0.095578
2013-01-04 -1.682405 -1.110668 0.423745 -1.216527
2013-01-05 2.312578 -0.954631 -0.844457 0.275501
2013-01-06 -0.916121 -1.499076 1.539255 -1.38455214.按照B进行横向排序
df.sort_values(by=‘B‘)
A B C D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
2013-01-01 0.284681 1.881328 0.310425 -2.52732915.获取列标为‘A‘的
df[‘A‘]
2013-01-01 0.284681
2013-01-02 -0.209723
2013-01-03 -0.095578
2013-01-04 -1.216527
2013-01-05 0.275501
2013-01-06 -1.384552
Freq: D, Name: A, dtype: float6416.获取横标切片
df[0:3]
A B C D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.05537017.获取横标切片(value)
df[‘20130102‘:‘20130104‘]
A B C D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.68240518.获取第一行
df.loc[dates[0]]
A 0.284681
B 1.881328
C 0.310425
D -2.527329
Name: 2013-01-01 00:00:00, dtype: float6419.获取行切片
df.loc[:,[‘A‘,‘B‘]]
A B
2013-01-01 0.284681 1.881328
2013-01-02 -0.209723 -1.410186
2013-01-03 -0.095578 0.576282
2013-01-04 -1.216527 0.423745
2013-01-05 0.275501 -0.844457
2013-01-06 -1.384552 1.539255df.loc[‘20130102‘:‘20130104‘,[‘A‘,‘B‘]]
df.loc[‘20130102‘,[‘A‘,‘B‘]]20.获取唯一元素
df.loc[dates[0],‘A‘]//这是唯一元素
df.at[dates[0],‘A‘]//与上面一样,官网这样解释For getting fast access to a scalar,更快的访问维度数据21.通过索引获取第一行(之前的loc是通过值获取行)
df.iloc[3]
A 1.191786
B -1.384943
C -1.463160
D 0.527332
Name: 2013-01-04 00:00:00, dtype: float6422.索引获取切片
df.iloc[3:5,0:2]
df.iloc[[1,2,4],[0,2]]
df.iloc[1:3,:]
df.iloc[1,1]
df.iat[1,1]
df[df.A>0]23.拷贝赋值
df2 = df.copy()
df2[‘E‘] = [‘one‘,‘two‘,‘three‘,‘four‘,‘five‘,‘six‘]
df224.进行判断是否贼取值
df2[df2[‘E‘].isin([‘two‘,‘four‘])]
输出:
A B C D E
2013-01-02 0.847134 -0.003377 0.353925 0.438065 two
2013-01-04 1.191786 -1.384943 -1.463160 0.527332 four25.进行按照日期取6个序列
s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range(‘20130102‘,periods=6))
s126.进行取赋值
df[‘F‘]=s1
dfA B C D F
2013-01-01 0.284681 1.881328 0.310425 -2.527329 NaN
2013-01-02 -0.209723 -1.410186 0.865336 0.893260 1.0
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370 2.0
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405 3.0
2013-01-05 0.275501 -0.844457 -0.954631 2.312578 4.0
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121 5.0