以下是使用Python以来的细节问题,会陆续记录和更新,欢迎交流👏👏
数据结构
- List:python中常用的数据结构,支持追加(append)、移除(remove)、指定位置添加(extend)、与Set(集合)的区别在于:List支出元素重复,Set不允许元素重复
- Remove语法慎用
- 因为对于一个list进行index的Remove,移除一个元素之后,整个list的index也是会刷新的;举个例子,比如List Remove第一个元素,第二个元素的索引会变成0
- Remove语法慎用
- [[]] * num(num是子列表数量) 构造空列表方法慎用
- 通过上述方式构造列表,采用是浅拷贝方式,对于大列表中的任何一个子列表,使用append会导致所有的子列表追加相同内容
- 深拷贝和浅拷贝的关系:浅拷贝可以理解为复制,被复制的列表发生变化时,尽管不操作复制列表,复制列表仍然发生变化。深拷贝可以理解为是开辟了一个新的内存空间,因此操作被复制对象,不影响深拷贝对象
- 列表去重
- List(Set(List)),即利用集合的无重复特性,转换之间进行驱虫,但是无法保证元素顺序与未去重的一致性,假设考虑到位置的重要性,建议重排,可以参考我之前的Python版本的几大排序算法
- 通过上述方式构造列表,采用是浅拷贝方式,对于大列表中的任何一个子列表,使用append会导致所有的子列表追加相同内容
- 与DataFrame格式之间转换
- 首先需要构造成字典格式,然后利用pandas,生成Dataframe,代码段如下(针对DataFrame进行了Drop、filter之后,一定要使用dataframe.drop_setindex 重排index,否则利用某些索引会报错)
- DataFrame格式
- 读取方式
import pandas as pd #header-表头 #split-行分隔符 data = pd.read_csv("/Users/sanyin/test.txt",header=None,split='\t') #重置表头-假设仅有两列 header = ['a','b'] data.columns = header
-
过滤
- 读取方式
#找出a字段大于1的所有行
data = data[data['a']>1]
#找出a、b字段都大于1的所有行
data = data[data['a']>1 & data['b']>1]
- DataFrame转格式
- dataframe -> json
- 假设变量data已经是DataFrame格式,看格式用内置type(data)方法,data.to_json(orients=record)
- DataFrame转numpy,也是以data变量为例,data.as_matrix()
- dataframe -> json