系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、pandas是什么?
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、
1.数据表创建
A.一维情形Series,创建Series对象可以通过传入list列表,dic字典或者numpy的nadarry对象
A.通过list创建
代码如下(示例):
>>> import pandas as pd
>>>> pd.Series([5,6,7,8,9]) #传入列表参数
0 5
1 6
2 7
3 8
4 9
dtype: int64
>>> s=pd.Series([5,6,7,8,9])
>>> s.values
array([5, 6, 7, 8, 9]) #获得值,返回一个numpy数组
>>> s.index #获得索引,返回一个numpy数组
RangeIndex(start=0, stop=5, step=1)
代码如下(示例):创建一个具有时间目录(pd.date_range())的Series
>>> pd.date_range('20210316',periods=5)#首先获得一个想要的时间索引
DatetimeIndex(['2021-03-16', '2021-03-17', '2021-03-18', '2021-03-19',
'2021-03-20'],
dtype='datetime64[ns]', freq='D')
#传入此索引,打印如下
>>> s2=pd.Series(range(1,6),index=pd.date_range('20210316',periods=5))
>>> s2
2021-03-16 1
2021-03-17 2
2021-03-18 3
2021-03-19 4
2021-03-20 5
Freq: D, dtype: int64 #‘Freq’的值为D,代表频率为‘day’天
B.通过numpy对象创建
代码如下(示例):使用numpy对象创建Series
>>> import numpy as np
>>> s = pd.Series( np.array([27.2, 27.65, 27.70, 28, 28, np.nan]) )
>>> s
0 27.20
1 27.65
2 27.70
3 28.00
4 28.00
5 NaN
dtype: float64
>>> len(s)
6
>>> s.shape
(6,)
>>> s.count
C.通过字典dic创建
代码如下(示例):使用字典创建Series
>>> data_dict = { 'BABA': 187.07, 'PDD': 21.83, 'JD': 30.79, 'BIDU': 184.77 }
>>>> s3=pd.Series(data_dict,name='中概股')
>>>> s3.index.name='股票代号'
>>>> s3
股票代号
BABA 187.07
PDD 21.83
JD 30.79
BIDU 184.77
Name: 中概股, dtype: float64
B.二维情形,DataFrame
代码如下(示例):同样可以传递以上三个参数,list,dict和numpy对象,下面就以dict为例说明,可以发现,字典中的key成为DataFrame中的colums中的元素,index同样可以指定;
import pandas as pd
symbol = ['BABA', 'JD', 'AAPL', 'MS', 'GS', 'WMT']
data = {'行业': ['电商', '电商', '科技', '金融', '金融', '零售'],
'价格': [176.92, 25.95, 172.97, 41.79, 196.00, 99.55],
'交易量': [16175610, 27113291, 18913154, 10132145, 2626634, 8086946],
'雇员': [101550, 175336, 100000, 60348, 36600, 2200000]}
df2 = pd.DataFrame( data , index=symbol)
df2.name='美股'
df2.index.name = 'Name'
>>> s
行业 价格 交易量 雇员
Name
BABA 电商 176.92 16175610 101550
JD 电商 25.95 27113291 175336
AAPL 科技 172.97 18913154 100000
MS 金融 41.79 10132145 60348
GS 金融 196.00 2626634 36600
WMT 零售 99.55 8086946 2200000
#高级操作,如下
>>> s.describe()
价格 交易量 雇员
count 6.000000 6.000000e+00 6.000000e+00
mean 118.863333 1.384130e+07 4.456390e+05
std 73.748714 8.717312e+06 8.607522e+05
min 25.950000 2.626634e+06 3.660000e+04
25% 56.230000 8.598246e+06 7.026100e+04
50% 136.260000 1.315388e+07 1.007750e+05
75% 175.932500 1.822877e+07 1.568895e+05
max 196.000000 2.711329e+07 2.200000e+06
2.数据表存载
DataFrame 可以被保存为 Excel, csv, SQL 和 HDF5 格式,其语句一看就懂,用 to_数据格式,具体如下:
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
df.to_excel('pd_excel.xlsx', sheet_name='Sheet1')
如果要加载某种格式的数据到 DataFrame 里,用 read_数据格式,具体如下:
df1 = pd.read_excel('pd_excel.xlsx', sheet_name='Sheet1')
df1df1 = pd.read_excel('pd_excel.xlsx', sheet_name='Sheet1')
df1
3.数据表索引与切片
A.单元素索引
可以通过位置索引,也可以通过标签索引
代码如下(示例):
#以此DataFrame为例
行业 价格 交易量 雇员
Name
BABA 电商 176.92 16175610 101550
JD 电商 25.95 27113291 175336
AAPL 科技 172.97 18913154 100000
MS 金融 41.79 10132145 60348
GS 金融 196.00 2626634 36600
WMT 零售 99.55 8086946 2200000
>>> s.iat[1,1]#用于位置索引
25.95
>>> s.at['JD','价格']#用于坐标索引
25.95
>>> s.价格
Name
BABA 176.92
JD 25.95
AAPL 172.97
MS 41.79
GS 196.00
WMT 99.55
Name: 价格, dtype: float64
>>> s['价格']
Name
BABA 176.92
JD 25.95
AAPL 172.97
MS 41.79
GS 196.00
WMT 99.55
Name: 价格, dtype: float64
B.列索引
>>> s.loc[:, '交易量':'交易量']#使用loc,返回一个DataFrame
交易量
Name
BABA 16175610
JD 27113291
AAPL 18913154
MS 10132145
GS 2626634
WMT 8086946
>>> s.loc[:, '交易量']#使用loc,返回一个Series
Name
BABA 16175610
JD 27113291
AAPL 18913154
MS 10132145
GS 2626634
WMT 8086946
Name: 交易量, dtype: int64
>>> s.iloc[:, 0:2]#使用iloc,返回一个DataFrame,同样也可以返回一个Series
行业 价格
Name
BABA 电商 176.92
JD 电商 25.95
AAPL 科技 172.97
MS 金融 41.79
GS 金融 196.00
WMT 零售 99.55