记性不好,多记录些常用的东西,真·持续更新中::
先列出一些常用的网址:

习惯上我们如此导入:

import pandas as pd
import numpy as np
import maplotlib.pyplot as plt

pandas 篇

pd.Series是一种一维的数组结构,可以列表形式初始化,得到的Series的index默认∈[0,n)

s = pd.Series([1, 3, 5, np.nan, 6, 8])

pandas的index、columns用list初始化,具体内容用矩阵初始化DataFrame:

pd.date_range('20160101',periods=6)
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d']) dates = pd.date_range('20190101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
查看数据:
# 查看前n行 后n行
df.head(n) df.tail(n)
# 查看快速统计摘要,注意describe也是一个df
df.describe()
# 转置 按轴排序(0x1y),按列'B'的值排序
df.T
df.sort_index(axis=1, ascending=False)
df.sort_values(by='B')
选择数据
# 选择独列 [0,3)行 [0,3)列
df['A'] df[0:3] df.iloc[;, [0, 1, 2]]
# 选择A B列还可以:
df.loc[:, ['A', 'B']]
# 获取dates[0]行的'A'列
df.loc[dates[0], 'A']
# loc前面加i表示利用数字而非名称来操作,比如取第3列
df.iloc[3]
# 比如取[3, 5)行的[0, 2)列:
df.iloc[3:5, 0:2]
# 行与列的切片:
df.iloc[1:3, :] 和 df.iloc[:, 1:3]
# 布尔索引 A列>0者, E列元素为'two' 或者 'four' 者
df[df.A > 0] 和 df[df['E'].isin(['two', 'four'])]
# 利用numpy 设置一组值
df.loc[:, 'D'] = np.array([5] * len(df))
# 利用where对某些值进行处理,比如大于0的取反
df[df>0] = -df
# 缺失数据的操作
df.dropna(how='any') 或者 df.fillna(value=5)
# 在不同轴上进行统计,mean是均值,一样0x1y
df.mean() 或者 df.mean(1)
# 数据应用于数据,例如累加,或者是lamda表达式
df.apply(np.cumsum) 或 df.apply(lambda x: x.max() - x.min())
# 排序数据 df.sort_values(by='columnsName') # 单独设置某一列的属性 df[['ISP']] = df[['ISP']].astype(int)
合并操作
# 如果是df组成的List,直接可以concat
pieces = [df1, df2, df3]
# ig..index 决定是否要重置index
pd.concat(pieces, ignore_index=True),注意要列同质
# SQL风格的merge 类似于Join连接
pd.merge(left, right, on='key')
# 尾随hh 是往后面添加,用appen,注意参数ignore_index=True才会重排index
df1.append(df2, ignore_index=True) ###### Grouping操作 和 Pivot 表
df.groupby('A') 或者多个的话 df.groupby(['A', 'B'])
pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
处理丢失数据
# 直接去掉nan所在的行or列,干脆利落
df.dropna(
axis=0, # 行0列1
how='any' # any但凡有nan就弃,all必须全nan才弃
)
# 填充
df.fillna(value=0)
# 判断是否有缺失数据,返回一个T/F的df
df.isnull()
# 判断是否有NaN,有就返回True
np.any(df.isnull()) == True
数据导入导出系列
import pandas as pd
# 读写csv,header决定是否有colums列说明
data = pd.read_csv('xxx.csv', header=None)
# sep是数据分隔的标记,默认是逗号
# index是否保留索引 默认保留
df.to_csv('xxx.csv', index=False, header=False, sep='?')
# 其它有用的参数有:
# na_rep="NA" 空值替换,默认是空格
# fload_format="%.2f" 数据保留2位小数
# 保留某些列而已 columns=['name', 'sex']
# 保存到pickle
data.to_pickle('xxx.pickle')

numpy 篇

# 创建数组
a = np.array([1,2,4])
# 指定数据类型 dtype
a = np.array([1,2,3]), dtype=np.float)
# 创建初始化好的x行y列的数组,如全0,全1等
np.zeros((x,y), dtype=np.int) 和 np.ones((x,y)), np.empty((x,y))
# 创建连续数组arange,1到100,步长为2
np.arange(1, 100, 2)
# reshape改变数据形状,注意要匹配得上
np.arange(15).reshape(3,5)
# linspace创建线形数据 [1,100]分成50份
np.linspace(1, 100, 50)
至于运算:
# 加减乘除都是点对点的,直接写就ok,比如
a-b 或者 a * b等
# 矩阵元素要乘方,用**,比如b^2
b**2
# 对数据进行逻辑判断,返回的是一个对应各个元素的True False组成的array
b < 3
# 矩阵点乘,随机矩阵,求sum min max
a.dot(b) 或者 np.dot(a, b)
np.random.random((2,4))
a.sum() 或 a.min() 或 a.max
Numpy array 合并
# 假设有np.array([1,1,1])和np.array([2,2,2])
np.vstack((A,B)) # [[1,1,1] [2,2,2]] vertival stack
np.hstack((A,B)) $ [1,1,1,2,2,2] horizontal stack
# array的转置,因为他不是矩阵,所以:
print(A[np.newaxis,;]) #[[1 1 1]]
print(A[np.newaxis,;].shape) # (1,3)
print(A[:,np.newaxis])
"""
[[1]
[1]
[1]] """
print(A[:,np.newaxis].shape)
# concatenate 函数会更统一一些,axis取0是成列,1成行
C.np.concatenate((A,B,B,A), axis=0)
D.np.concatenate((A,B,B,A), axis=1)
numpy的分割
A = np.arange(12).reshape(3,4)) # 3行4列
np.split(A, 2, axis=1) # 2行
np.split(A, 3, axis=3) # 3列
np.array_split(A, 3, axis=1) # 3行,不等量分割 即不均匀
# 方便地且对应地,有vsplit和hsplit
# v竖h横比如vsplit等于split(..., axis=0)
np.vsplit(A,3)

画图篇

# 随机生成1000个数据
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
# 为了方便观看效果, 我们累加这个数据
data.cumsum()
# pandas 数据可以直接观看其可视化形式
data.plot()
plt.show() # Dataframe里,一列一条线,4条:
data = pd.DataFrame(
np.random.randn(1000,4),
index=np.arange(1000),
columns=list("ABCD"))
data.cumsum()
data.plot()
plt.show() # 对于经常需要画的dataframe的其他绘图形式:  df.plot(kind='bar') # 柱状图 df.plot(kind='barh') # 横柱状图 df.plot(kind='bar', stacked=True) # 柱状图堆叠 df.plot(kind='area') # 如果想画的是df前10行的,行为x轴的变化: for i in len(df): df.iloc[i].plot(label=str(i)) plt.legend() plt.show()

具体的画图小技巧可以查这里
pandas除了plot,还有散点图scatter,柱状图bar,直方图hist,箱线图box,密度图kde,二维填充图area等。

说一下散点图scatter,最重要的就是指定x和y

ax=data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class1')
# 将之下这个 data 画在上一个 ax 上面
data.plot.scatter(x='A',y='C',color='LightGreen',label='Class2',ax=ax)
plt.show()

Python pandas & numpy 笔记的更多相关文章

  1. python pandas/numpy

    import pandas as pdpd.merge(dataframe1,dataframe2,on='common_field',how='outer') replace NaN datafra ...

  2. Python pandas学习笔记

    参考文献:<Python金融大数据分析> #导入模块 import pandas as pd #生成dataframe df = pd.DataFrame([10,20,30,40], c ...

  3. python及pandas,numpy等知识点技巧点学习笔记

    python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...

  4. python安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  5. [转] python安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...

  6. 【转载】python安装numpy和pandas

    转载:原文地址 http://www.cnblogs.com/lxmhhy/p/6029465.html 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装 ...

  7. Python Pandas与Numpy中axis参数的二义性

    Stackoverflow.com是程序员的好去处,本公众号将以pandas为主题,开始一个系列,争取做到每周一篇,翻译并帮助pandas学习者一起理解一些有代表性的案例.今天的主题就是Pandas与 ...

  8. Python pandas学习总结

    本来打算学习pandas模块,并写一个博客记录一下自己的学习,但是不知道怎么了,最近好像有点急功近利,就想把别人的东西复制过来,当心沉下来,自己自觉地将原本写满的pandas学习笔记删除了,这次打算写 ...

  9. Python 科学工具笔记

    Python 科学工具笔记 numpy a = numpy.array([1,2,3,4]);// 创建一个numpy的数组对象 此时a.shape显示的值为(4,); 由此得出结论在一维的数组中, ...

随机推荐

  1. openerp7 时区问题解决--改成本地时区

    由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...

  2. 传统项目转前端工程化——路由跳转时出现浏览器锁死和白屏【该死的同步ajax】

    [一开始我想到是该死的同步ajax,但我没验证,把他忽略了] 在探索前端工程化vue-cli做spa时,从搜索结果页跳转商品详情页时,因为详情页有很多ajax请求,并且都用的同步请求,就会导致请求时浏 ...

  3. LINQ查询操作符 LINQ学习第二篇

    一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataCo ...

  4. WebApi实现单个文件的上传下载

    上传和下载是很常用的功能了,只有当用到的时候才发现不会写...,经过一番百度.筛选.整理修改后,实现了功能,下面简单的记录下实现方法. 一.上传功能 1.前端代码 上传文件 <input typ ...

  5. win2d 图片水印

    本文告诉大家如何使用 win2d 给图片加上水印. 安装 首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d 如果没有更新 dot net core 那么在运行可能会 ...

  6. C#微信小程序服务端获取用户解密信息

    using AIOWeb.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.C ...

  7. SQL Server T—SQL 存储过程 触发器

    一.存储过程 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需要大量T- ...

  8. 解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,my ...

  9. Linux常用基本命令(paste)

    paste命令 作用:合并文件 格式: paste [option] [file] 1,把两个文件的内容,按行合并 ghostwu@dev:~/linux/paste$ ls ghostwu1.txt ...

  10. HDU1824(2-SAT)

    Let's go home Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...