数据分析之pandas

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 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

总结

未完待续!!
上一篇:利用Host把自定义域名指向本地,nginx做反向代理


下一篇:面试需准备什么