python常见方法

数据降维

pandas 设置显示的行数 pandas.set_option('display.max_rows',None) #全部显示

多维数据降为一维

numpy.flatten()返回一份拷贝,对拷贝的修改不会影响原始矩阵
numpy.ravel()返回视图(view, 类似c中引用),会影响原始矩阵

meshgrid

[X,Y]=meshgrid(x,y)

  1.作用是产生一个以向量x为行,向量y为列的矩阵, shape= [len(x), len(y)]

  2.MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应用。

二维数据展成一维

data4 = ['%.1f'%i for item in data1.values for i in item]
print(data4)
data3 = pd.Series(data4)
print(data3.value_counts())

DataFrame对象清空

df.drop(df.index,inplace=True)

dataframe数据筛选

result[abs(result['real'] - result['pred']) < 2.0]

删除列

df.drop(df.columns[x], axis=1, inplace=True) x=[1,2]

产生时间序列

pandas.date_range(start=None, end=None, periods=None, freq=’D’, tz=None, normalize=False, name=None, closed=None, **kwargs)

参数:
start:string或datetime-like,默认值是None,表示日期的起点。
end:string或datetime-like,默认值是None,表示日期的终点。
periods:integer或None,默认值是None,表示你要从这个函数产生多少个日期索引值;如果是None的话,那么start和end必须不能为None。
freq:string或DateOffset,默认值是’D’,表示以自然日为单位,这个参数用来指定计时单位,比如’5H’表示每隔5个小时计算一次。
tz:string或None,表示时区,例如:’Asia/Hong_Kong’。
normalize:bool,默认值为False,如果为True的话,那么在产生时间索引值之前会先把start和end都转化为当日的午夜0点。
name:str,默认值为None,给返回的时间索引指定一个名字。
closed:string或者None,默认值为None,表示start和end这个区间端点是否包含在区间内,可以有三个值,’left’表示左闭右开区间,’right’表示左开右闭区间,None表示两边都是闭区间。

转化成分类问题?以0.5为刻度

import os
import pandas as pd
import numpy as np
outFile = "E:/pythonFile/weeks/cls_all_point1.csv"
readFilePath= "E:/pythonFile/monday/all_point96_1.csv"

data1 = pd.read_csv(readFilePath, header=None)

dlen = len(data1[14])
print(dlen)
for i in range(0, dlen) :
#    print(i)
    data1[14][i] = int(data1[14][i] / 0.5)

data1.to_csv(outFile, index=False,header=None)
print("over")

创建dataframe拼接数据

data1 = pd.read_csv(readFilePath, header = 0, usecols=[2])#
data2 = data1[0:10]#.values.reshape(1,10) #但数据下标默认从0开始且无法修改
print(data2)
#data2.T.columns = range(1,11)
print(data2.T)
data = pd.DataFrame(columns=range(0,10))

data = data.append(data2.T,ignore_index=True) 
#通过reshape,直接创建dataframe是可以的 或先生成空dataframe,再拼接
#data.append(pd.DataFrame(data2))
print(data)

data = pd.DataFrame({'real':real, 'pred':pred}) 
#要求real,pred为一维数组,若不是可以通过list->ndarray->ndarray.reshape()

常用方法

python寻找list中最大值、最小值并返回其所在位置

print c.index(min(c))  # 返回最小值
print c.index(max(c)) # 返回最大值

统计数组每个元素出现次数

def all_np(arr):
    arr = np.array(arr)
    key = np.unique(arr)
    result = {}
    for k in key:
        mask = (arr == k)
        arr_new = arr[mask]
        v = arr_new.size
        result[k] = v
    return result

小数精度控制

round(data,factor) 如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。
但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,返回数值类型
使用格式化:"%.2f" % 2.635,返回字符串类型
math.ceil(),上取整
math.floor(), 下取整

统计程序运行时间

方法1
import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

方法2
start = time.time()
run_fun()
end = time.time()
print end-start

方法3
start = time.clock()
run_fun()
end = time.clock()
print end-start

方法1和方法2都包含了其他程序使用CPU的时间,是程序开始到程序结束的运行时间。
方法3算只计算了程序运行的CPU时间

numpy.ndarray 和 list转换

list 转 numpy , list长度len(list)返回类似数组的行数
np.array(a)

ndarray 转 list, ndarray形状ndarray.shape返回数组的行、列数
a.tolist()

常用ndarray属性:
* dtype       描述数组元素的类型
* shape       以tuple表示的数组形状
* ndim        数组的维度
* size        数组中元素的个数
* itemsize    数组中的元素在内存所占字节数
* T           数组的转置
* flat        返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖
* real/imag   给出复数数组的实部/虚部
* nbytes      数组占用的存储空间 
axis=0,指定拼接在下方,axis=1,指定拼接在右侧

常用ndarray方法:
    * reshape(…)       返回一个给定shape的数组的副本
    * resize(…)        返回给定shape的数组,原数组shape发生改变
    * flatten()/ravel()返回展平数组,原数组不改变
    * astype(dtype)    返回指定元素类型的数组副本
    * fill()           将数组元素全部设定为一个标量值
    * sum/Prod()       计算所有数组元素的和/积
    * mean()/var()/std() 返回数组元素的均值/方差/标准差
    * max()/min()/ptp()/median()返回数组元素的最大值/最小值/取值范围/中位数
    * argmax()/argmin() 返回最大值/最小值的索引
    * sort()            对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
    * view()/copy()     view创造一个新的数组对象指向同一数据;copy是深复制
    * tolist()          将数组完全转为列表,注意与直接使用list(array)的区别
    * compress()        返回满足条件的元素构成的数组

求长度或size

ndarray,dataframe可以用shape返回高维size,用len返回第一维长度
dataframe.values为ndarray类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值