<div style="font-size:16px;">
<p>Pandas用法总结</p>
<p>Pandas简介</p>
<p>Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据库所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。Pandas基于两种数据类型:series 和 dataframe</p>
<p>Series</p>
<p>Series是Pandas中最基本的对象,类似一维数组。事实上,Series基本上就是基于NumPy的数组对象来的,和NumPy的数组不同,Series能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。用法总结如下:</p>
<p>Series对象的创建</p>
<p># pandas 学习</p>
<p>import pandas as pd</p>
<p>from pandas import Series,DataFrame</p>
<p>import numpy as np</p>
<p># 一维数组</p>
<p>sel = Series([1,2,3,4])</p>
<p># 会同时打印索引和对应的元素</p>
<p>print(sel)</p>
<p># 但通常我们会自己创建索引 index代表索引</p>
<p># sel= Series(data=[1,2,3,4],index=['a','b','c','d'])</p>
<p>sel = Series(data=[1,2,3,4],index=list('abcd'))</p>
<p>print('数组:')</p>
<p>print(sel)</p>
<p># 获取内容</p>
<p>print('数组值:',sel.values)</p>
<p># 获取索引</p>
<p>print('数组下标',sel.index)</p>
<p># 同时获取索引和值</p>
<p>print('同时获取索引和对应值',list(sel.iteritems()))</p>
<p># 将字典转换为Series</p>
<p>dict = {'red':100,'back':400,'green':300,'pink':900}</p>
<p>se3 = Series(dict)</p>
<p>print(se3)</p>
<p>Series数据获取</p>
<p># Series 数据获取</p>
<p>sel = Series(data = [1,2,3,4], index = list('abcd'))</p>
<p>print(sel)</p>
<p># Series 对象同时支持位置和标签两种方式获取数据</p>
<p>print('索引下标:',sel['c'])</p>
<p>print('位置下标:',sel[2])</p>
<p># 获取不连续的数据</p>
<p>print('索引下标:')</p>
<p>print(sel[['a','c']])</p>
<p>print('位置下标:')</p>
<p>print(sel[[1,3]])</p>
<p># 可以使用切片 取数据</p>
<p>print('位置切片:')</p>
<p>print(sel[1:3]) # 左包含右不包含</p>
<p>print('索引切片:')</p>
<p>print(sel['b' : 'd']) # 左右都包含</p>
<p># 重新赋值索引的值</p>
<p>sel.index = list('dcba')</p>
<p>print(sel)</p>
<p># reindex 重新索引,会返回一个新的Series(调用reindex将会重新排序,缺失值用NaN填补)</p>
<p>print(sel.reindex(['b','a','c','d','e']))</p>
<p># drop() 丢弃指定轴上的项</p>
<p>sel = pd.Series(range(10,15))</p>
<p>print(sel)</p>
<p># drop</p>
<p>print(sel.drop([2,3]))</p>
<p>Series算术运算</p>
<p># Series 进行算术运算</p>
<p># 对 Series 的算术运算都是基于 index 来进行的</p>
<p># 我们可以用 加减乘除(+,-,* ,/)这样的运算对两个 Series 进行运算</p>
<p># pandas 根据索引 index 对响应的数据进行计算,结果将会以浮点数的形式储存,以避免丢失精度</p>
<p># 如果 pandas 在 两个 Series 里找不到相同的 index ,对应的位置就返回一个空值 NaN</p>
<p># series(data ,index) 第一个是数据 第二个是索引 感觉有点别扭</p>
<p># 只有索引相同才进行计算,否则返回空值 NaN</p>
<p>series1 = pd.Series([1,2,3,4],['London','HongKong','HuBei','Lagos'])</p>
<p>series2 = pd.Series([1,3,6,4],['London','Accra','Lagos','Delhi'])</p>
<p>print(series1)</p>
<p>print('\n')</p>
<p>print(series2)</p>
<p>print('\n')</p>
<p>print(series1-series2)</p>
<p>print('\n')</p>
<p>print(series1+series2)</p>
<p>print('\n')</p>
<p>print(series1*series2)</p>
<p>print('\n')</p>
<p># 同样也支持numpy 的数组运算</p>
<p>sel = Series(data=[1,6,3,5],index=list('abcd'))</p>
<p>print('原数组:')</p>
<p>print('\n')</p>
<p>print(sel)</p>
<p>print('\n')</p>
<p>print(sel[sel>3]) # 布尔数组过滤 值大于3</p>
<p>print('\n')</p>
<p>print(sel * 2) # 标量乘法</p>
<p>print('\n')</p>
<p>print(np.square(sel)) # 可以直接加入到numpy的数学函数 平方</p>
<p>DataFrame</p>
<p>DataFrame的创建</p>
<p># DataFrame 的创建</p>
<p># 二维数据结构(表格形式储存)</p>
<p># 三个参数 data index columns 分别代表 数据 行索引 列索引</p>
<p># 使用二维数组</p>
<p>df1 = DataFrame(np.random.randint(0,10,(4,4)),index=[1,2,3,4],columns=['a','b','c','d'])</p>
<p>print(df1)</p>
<p>运行结果:</p>
<p>a b c d</p>
<p>1 2 9 6 1</p>
<p>2 0 5 5 0</p>
<p>3 4 4 7 8</p>
<p>4 4 3 5 2</p>
<p># 使用字典进行创建(行索引由index决定,列索引由字典的键决定)</p>
<p>dict = {<!-- --></p>
<p>'Province': [ |
|