linux 下 pandas 库运用 知识点整合
来源:互联网 发布:网络协议分析实验 编辑:程序博客网 时间:2024/06/11 17:31
import numpy as npimport pandas as pd'''1.Series类型:带索引(标签)的一维数组,类似于字典Index(pandas自己定义的Index类型) Value(ndarray类型)a 1b 2c 3'''# 1)Series 类型的创建# 由标量创建Series_1_1 = pd.Series(data=25, index=('a', ))Series_1_2 = pd.Series(data=25, index=['a', 'b', 'c'])Series_1_1.index.name = 'Series_1_1_index_name'Series_1_1.name = 'Series_1_1'print("由标量创建:\n", Series_1_1, "\n", Series_1_2)print("typeof Index:", type(Series_1_1.index))print("typeof Value:", type(Series_1_1.values))#Series_1_2[0]==Series_1_2['b']#Series_1_2[['b','c']] yes! Series_1_2[[0,1]] yes!#Series_1_2[0,'b'] no 两套索引并存,但不能同时使用# Python 字典的 get 方法和 in关键字可以使用# Series_1_2.get('a',default=10)# 'a' in Series_1_2print("索引:", Series_1_2[0], Series_1_2['b'], "\n", Series_1_2[['b', 'c']], "\n", Series_1_2[[0, 1]], '\n', Series_1_2.get('a', default=10), '\n', 'a' in Series_1_2)#由python序列创建Series_2_1 = pd.Series([1, 2, 3], index=range(3))Series_2_2 = pd.Series(data=(1, 2, 3), index=range(6, 3, -1))print("由python序列创建:\n", Series_2_1, "\n", Series_2_2)#由Python字典创建Series_3_1 = pd.Series(data={'a': 1, 'b': 2, 'c': 3})Series_3_2 = pd.Series( data={'a': 1, 'b': 2, 'c': 3}, index=('b', 'c', 'a', 'd'))print("由Python字典创建:\n", Series_3_1, "\n", Series_3_2)#由ndarray数组创建Series_4_1 = pd.Series( data=np.arange(start=2, stop=6, step=1), index=(1, 4, 6, 3))print("由ndarray数组创建:\n", Series_4_1)#2)Series数组的运算#)与标量的运算 ndarray数组的运算法则print("Series_1_2+25:", Series_1_2 + 25)print("np.log(Series_1_2):", np.log(Series_1_2))#)Series与Series 之间进行运算,是索引对齐运算 结果为并集,不重合的所以部分value 域为零print("Series_1_2+Series_1_1:", Series_1_2 + Series_1_1)'''2.DataFrame 类型 :带 标签的二维数组 columns column_1 column_2indexrow_1 1 2 row_2 3 4轴axis=0 为列方向的轴 轴axis=1 为行方向的轴dataFrame.columns Index 对象dataFrame.index Index对象dataFrame.values ndarray 二维数组对象 '''#3)DataFrame对象构造方法# 直接利用nparray多维数组创建dataFrame_1 = pd.DataFrame( data=10 * np.random.rand(20).reshape(4, 5), index=['row_1', 'row_2', 'row_3', 'row_4'], columns=['1', '2', '3', '4', '5'])print("直接利用nparray多维数组创建:", dataFrame_1)# 利用python字典创建'''data_2={ column_1: (values域)(Python序列,Python字典),也可以是一个Series对象 column_2: (values域)}'''data_2 = { 'column_1': { 'a': 1, 'b': 2 }, 'column_2': { 'a': 2, 'b': 3 }, 'column_3': pd.Series(data=np.arange(2), index=['a', 'c'])}dataFrame_2 = pd.DataFrame(data=data_2)print("利用python字典创建:", dataFrame_2)#4)DataFrame对象的切片操作'''#dataFrame类型的索引 切片操作loc at 根据自定义索引选取'''print("\ndataFrame类型的索引 切片操作loc at\n")#用,分割选取元素选取时是选取的列 dataFrame_2['column_1','column_2'] 正确print("单个元素选取时是选取的列,比如:dataFrame_2['column_1']", dataFrame_2['column_1'])#切片时又是选择行 dataFrame_2['column_1':'column_2']是错误的print("切片时又是选择行,eg:dataFrame_2[0:2]", dataFrame_2[0:2])print(":.ix", dataFrame_2.ix['a']) #dataFrame_2.ix[1] okprint("eg:loc多个元素", dataFrame_2.loc['a':'c', 'column_1':'column_2']) #包含尾部print("eg:loc单个元素", dataFrame_2.loc['a', 'column_1'])print("eg:at单个元素", dataFrame_2.at['a', 'column_1'])'''#dataFrame类型的索引 切片操作iloc iat,类似于ndarray数组的切片操作,采用下标切片,不能用自定义的索引'''print("\ndataFrame类型的索引 切片操作iloc iat,类似于ndarray数组的切片操作,采用下标切片,不能用自定义的索引\n")print(dataFrame_2.iloc[2]) #第二行print("\n", dataFrame_2.iloc[1, 0:2])print(dataFrame_2.iloc[2, 1]) #选取单个元素,效率低print(dataFrame_2.iat[0, 0]) #选取单个元素效率高#5)dataFrame 对象的筛选'''#dataFrame 对象的筛选 dataFrame_2[dataFrame.column_1>0.5] 选取出来是有True的那一行dataFrame.column_1>0.5 columns(列方向上的) 的 boolean Series 对象 | 或 & ~(取反) ^ (异或)可以用'''print("\nDataFrame 对象的筛选 \n", dataFrame_2[dataFrame_2['column_1'] > 0.5])print('\nDataFrame 对象的筛选 ,选取特定的列\n', dataFrame_2['column_1'][~(dataFrame_2['column_1'] > 0.5)])#6)Index 类型的 方法'''下列方法均产生新的 Index.append(idx)连接另一个Index对象.diff(idx)计算差集.intersection(idx)计算交集.union(idx)计算并集.delete(loc)删除index对象位置loc的索引,不改变原Index对象,返回一个新的Index对象.insert(loc,value)在loc位置增加一个value元素,不改变原Index对象,返回一个新的Index对象'''new_columns = dataFrame_2.columns.insert(4, 'new_column')print(new_columns)#6)#DataFrame 对象方法'''#DataFrame 对象方法#1.insert添加列insert(self, loc, column, value, allow_duplicates=False): """ Insert column into DataFrame at specified location.向DataFrame中增加一列 If `allow_duplicates` is False, raises Exception if column is already contained in the DataFrame. Parameters ---------- loc : int Must have 0 <= loc <= len(columns) column : object(列的名字) value : scalar, Series, or array-like#2. .drop(''或[, ,]里面是自定义索引值,axis=0)删除列'''dataFrame_2.insert( loc=1, column='new_column', value=dataFrame_2['column_1']) #dataFrame_2['column_1']选取一列数据dataFrame_2_2 = dataFrame_2.drop('column_1', axis=1) #在行方向上搜寻索引值(也就是在列索引上搜寻)dataFrame_2_3 = dataFrame_2.drop('a') #默认axis为0 在列方向上搜寻索引值(也就是在行索引上搜寻)print("dataFrame_2:", dataFrame_2)print("dataFrame_2_2:", dataFrame_2_2)print("dataFrame_2_3:", dataFrame_2_3)#reindex 方法New_Series_1_2_1 = Series_1_2.reindex( index=[2, 3, 4, 5, 6, 7], fill_value=-1) #fill_value 替代NaN填充print("New_Series_1_2_1:", New_Series_1_2_1)#7)广播运算法则series_GB = pd.Series(np.arange(2), index=['a', 'b'])dict_GB = { 'a': pd.Series(np.arange(2, 4), index=['row_1', 'row_2']), 'b': pd.Series(np.arange(4, 6), index=['row_1', 'row_2'])}dataFrame_GB = pd.DataFrame(dict_GB)#默认与axis=1 与1轴(行方向)的元素进行索引对齐运算print(dataFrame_GB + series_GB)#8)排序'''不改变原数组,返回一个新的数组.sort_index(axis=0,ascending=True)#0轴正向 根据索引排序.sort_values(by,axis=0,ascending=True)#by 根据0轴哪个列排序 by为那一列的索引 NaN 放在最后'''dataFrame_2_4 = dataFrame_2.sort_values(by='column_2', ascending=False)print("sorted:", dataFrame_2_4)#9)科学运算1 不改变原对象 创建一个新的对象'''1.Series 和DataFrame 类型通用以下均默认为每一个0轴单独计算.sum .count 非NaN的值的个数 .mean 均值 .median 中位数 .min .max.describe 统一描述函数 也是0轴分别单独计算2.仅Series才可以使用argmin argmax 返回自动索引idmin idmax 返回自定义索引 '''dataFrame_2_describe = dataFrame_2.describe()print("dataFrame_2_describe:", dataFrame_2_describe)#10)科学运算2 不改变原对象,创建一个新的对象'''下面运算全部都是基于0轴.cumsum 累加 累加,每个位置都要与前面的元素进行累加得出结果.cumprod 累乘.cummax .cummin滚动计算,每几个元素一计算,不到这个数量就不计算.rolling(w)'''print("滚动计算:", dataFrame_2_describe.rolling(3).sum())
阅读全文
0 0
- linux 下 pandas 库运用 知识点整合
- Linux下c语言知识点整合-
- Linux下安装numpy,pandas,matplotlib
- linux下安装numpy,pandas、matplotlib
- linux 下 常见 知识点
- linux下setUid知识点
- pandas琐碎知识点
- Pandas知识点(一)
- Pandas知识点(二)
- Pandas知识点(三)
- Pandas知识点(四)
- Pandas知识点(五)
- Linux下配置JAVA运用
- linux下tar的运用
- linux 下matplotlib 运用二
- Linux下Opencv整合
- 知识点整合
- linux 下oracle 环境变量知识点
- java eclipse sonar 圈复杂度
- RequireJS 入门知识讲解
- Spring Boot 整合 Spring AMQP
- 为何引入输入子系统及其架构
- 作为云计算 2.0 时代的里程碑,云数据库PolarDB 还需要做什么?
- linux 下 pandas 库运用 知识点整合
- C
- 欢迎使用CSDN-markdown编辑器
- LinkedBlockingQueue源码分析
- Noip2015 Day2 T1 跳石头(二分答案)
- ODI使用MDX导出Essbase数据中文乱码问题
- Unity网格编程篇(二) 非常详细的Mesh编程入门文章
- C++11 Lambda的变量捕获和Lambda在Qt中的应用
- SQL中常用日期转换Covert(Datetime)