Python函数
(1)数据框的另一种定义方式,将数据内容(多维数组)直接放入data中,再定义columns和index。(数据框.columns是取列名,.index是取行名,取出的类型类似元组,可以用[0],[1]…直接取出)
df = pd.DataFrame(data=[[34, ‘null‘, ‘mark‘], [22, ‘null‘,‘mark‘], [34, ‘null‘, ‘mark‘]], columns=[‘id‘, ‘temp‘, ‘name‘], index=[1, 2,3])
print(df)
结果:
id temp name
1 34 null mark
2 22 null mark
3 34 null mark
(2)对数据框的每一列进行操作
for c in df.columns:
print(‘--%s--‘ %c)
print(df[c].value_counts())
结果:
--id--
34 2
22 1
dtype: int64
--temp--
null 3
dtype: int64
--name--
mark 3
dtype: int64
不用循环的简易写法,应用apply和lambda函数
df1 = df.apply(lambdax: x.value_counts().T.stack())
print(df1)
注:对数据框整个进行apply是对每一列进行操作,T是转置,stack是去掉nan的项。如果不是统计每个取值的个数,就是对每列中每个值进行操作。
结果:
id 22 1
34 2
temp null 3
name mark 3
dtype: float64
也可以取出单列,对单列中的每个值进行操作。
df2 =df[‘id‘].apply(lambda x: x+1)
print(df2)
结果:
1 35
2 23
3 35
Name: id, dtype: int64
(3)字符与字符串的转换
整数字符串转换为对应的整数:int(‘12‘)
小数字符串转换为对应小数:float(‘12.34‘)
数字转换为字符串:str(123.45)
ASCII码转换为相应字符:chr(97)
字符转换为相应ASCII码:ord(‘a‘)
注:ASCII码对应的是整型的。
(4)dataframe类型转换
df.astype(int)
(5)从dataframe中取出列有两种方式
df.id,
df[‘id’]
1 34
2 22
3 34
Name: id, dtype: int64
1 34
2 22
3 34
Name: id, dtype: int64
(6)is判断是否是同一对象,ain b是判断a是否是b中的元素 (不用调用包,直接可以用)
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is b) 注:is判断内存地址,不是判断是否相等
print(a is c)
print(1 in a)
结果:
False
True
True
Isin判断数据框中的元素是否在列表中,一个一个判断,只要有,就是True,否则False。
df:
id temp name
1 34 null mark
2 22 null mark
3 34 null mark
print(df.id.isin([3,34]))
结果:
1 True
2 False
3 True
Name: id, dtype: bool
(7)用列名从数据框取出多列,一定要用列表组合成一个整体,否则会报错。
d =df[[‘id‘, ‘temp‘]]
print(d)
结果:
id temp
1 34 null
2 22 null
3 34 null
(8)DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=‘‘)
返回的还是一个数据框
Parameters: |
level : int, str, tuple, or list, default None Only remove the given levels from the index. Removes all levels by default drop : boolean, default False Do not try to insert index into dataframe columns. This resets the index to the default integer index. inplace : boolean, default False Modify the DataFrame in place (do not create a new object) col_level : int or str, default 0 If the columns have multiple levels, determines which level the labels are inserted into. By default it is inserted into the first level. col_fill : object, default ‘’ If the columns have multiple levels, determines how the other levels are named. If None then the index name is repeated. |
Returns: |
resetted : DataFrame |
print(df.reset_index()) 注:将index作为一列加入到了数据框中
结果:
index id temp name
0 1 34 null mark
1 2 22 null mark
2 3 34 null mark
print(df.reset_index(level=0)) 注:还是将Index作为一列加入到了数据框中??level好像没有用
结果:
index id temp name
0 1 34 null mark
1 2 22 null mark
2 3 34 null mark
print(df.reset_index(level=0,drop=True))
注:drop=true没有加入Index列
结果:
id temp name
0 34 null mark
1 22 null mark
2 34 null mark
(9)数据框中的函数有的可以对整个数据框,有的只是对其中的列
df1= pd.DataFrame(data=[[2.987, 4, 6, 6], [5, 5, 7, 8], [7, 8, 3, 23], [6, 3, 66,44], [32, 5, 6, 2]], columns=[‘x1‘, ‘x2‘, ‘x3‘, ‘y‘])
结果:
x1 x2 x3 y
0 2.987 4 6 6
1 5.000 5 7 8
2 7.000 8 3 23
3 6.000 3 66 44
4 32.000 5 6 2
print(df1.x1.round(2))
结果:
0 2.99
1 5.00
2 7.00
3 6.00
4 32.00
注:df1.round(2)会报错
print(df1.sum()) 注:sum后面一定要带括号(),否则虽然不会报错,但返回结果不是各列求和。
结果:
x1 52.987
x2 25.000
x3 88.000
y 83.000
(10)time.sleep(t),推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间,没有返回值。t代表推迟执行的秒数。
print(‘start:%s‘ %datetime.now().strftime(‘%Y-%m-%d %H:%M:%S‘))
print(‘start:%s‘ % time.ctime())
time.sleep(5)
print(‘end:%s‘%datetime.now().strftime(‘%Y-%m-%d %H:%M:%S‘))
print(‘end:%s‘ % time.ctime())
结果:
start: 2016-04-13 17:46:47
start: Wed Apr 13 17:46:47 2016
end: 2016-04-13 17:46:52
end: Wed Apr 13 17:46:52 2016
文件更改扩展名的方法:
1、打开我的电脑,如图所示,会看到菜单栏。若没有,则按一下ALT键就会出现。依次选择工具→文件夹选项,打开文件夹选项对话框。
2、点击查看选项卡,向下滑动滚动条到底部。
3、找到隐藏已知文件类型的扩展名选项,取消选中状态。点击确定即可,此时我们就可以更改文件的扩展名。