python学习笔记1

一、关于python中时间的处理

以下内容参考文章:https://blog.csdn.net/p9bl5bxp/article/details/54945920

获取当前时间,使用datetime类

import datetime

datetime.datetime.today()    获取当前时间,类型是datetime.datetime类型

获取字符串形式:datetime.datetime.today().strftime('%Y%m%d')

或者更精确的:datetime.datetime.today().strftime('%Y%m%d %H:%M:%S.%f')

二、关于python中空值的处理 

以下内容参考文章:https://blog.csdn.net/ustbbsy/article/details/80748978

1 、统计缺失值

统计data里每一列是否有空值:

data.isnull().any()

统计data里每一列空值的个数:

data.isnull().any().sum()

但是有的时候,明明有空值却统计不出来。

最近我遇到的数据,空值的填充是null,这个需要转化一下才可以用上面的函数。

data = data.replace('null',np.NaN)

然后你再继续用data.isnull().any(),ata.isnull().any().sum()就没问题了。

如果这么做,你的问题还没解决,查看你的缺失值的填充是什么,用np.NaN替代。、

另外的方法:

np.any(np.isnan(data))

np.all(np.isfinite(data))

2 、缺失值填充

 inf数值填充

data.fillna(0) # 用了0填充

判断:np.isinf(data)

填充:data[np.isinf(data)) = 0

3、 番外

                     如果你的数据有字符串,null也算,在你做data.describe()时,这一列不会出现。所以也可以用describe()的某一列是                否出现来检查是否有缺失值,字符串。

当你用data.fillna(0)把缺失值都处理完之后,发现data.describe()还是缺少原来的一列。

这时候你要查看,这一列的数据格式是什么,用data[colname].dtype查看这一列数据的格式,

然后查看能在describe()中出现的一列的数据格式,你会发现不一样,所以你改成一致就ok了,

用函数data[colname].astype('int64')

三 、推导式 if else for in

c = a if a>b else b    //如果a>b返回a,否则返回b

c = [ i for i in a if i%2==0 ]  //遍历a,在i为偶数时返回

c = [i if i%2==0 else 1 for i in a]  //遍历a,如果i为偶数直接返回,否则直接返回1。此处if写在for前面要求必须有else项

推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种

1.列表推导式也叫列表解析式。

功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表

格式:用中括号括起来,中间用for语句,后面跟if语句用作判读,满足条件的传到for语句前面用作构建先的列表

[x**2 for item in item_list if item>2]

例子:

1 >>> li=[i*2 for i in range(10) if i % 2 == 0]

2 >>> print li

3  [0, 4, 8, 12, 16]

很明显,列表解析式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表,并不会直接返回,需              要赋值给变量

2.第二种是字典解析式,这个跟列表解析式的用法是差不多的,只不中括号该改成大括号,毕竟字典本身用的就是大括                   号。

例子:

1 #快速转换字典键值位置

2 >>> mca={"a":1, "b":2, "c":3, "d":4}

3 >>> dicts={v:k for k,v in mca.items()}

4 >>> print dicts

5 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

还有一种是集合推导式。

功能:集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,

但集合是一种无重复无序的序列

区别:跟列表推到式的区别在于:1.不使用中括号,使用大括号;2.结果中无重复;3.结果是一个set()集合,集合里面是               一个序列

1 >>> squared={i*2 for i in [1,1,2]}

2 >>> print squared

3 set([2, 4])

示例:

  1. import pandas as pd  
  2.   
  3. data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chongqing'],  
  4.        'year': [2016,2016,2015,2017,2016, 2016],  
  5.        'population': [2100, 2300, 1000, 700, 500, 500]}  
  6. frame = pd.DataFrame(data, columns = ['year', 'city', 'population', 'debt'])  
  7.   
  8. # 使用apply函数, 如果city字段包含'ing'关键词,则'判断'这一列赋值为1,否则为0  
  9. frame['panduan'] = frame.city.apply(lambda x: 1 if 'ing' in x else 0) 

你可能感兴趣的:(python学习笔记,python,time,datetime,时间,时间处理)