『Python学习』pandas进阶学习笔记
来源:互联网 发布:微信淘宝客返利机器人 编辑:程序博客网 时间:2024/05/16 13:04
Pandas数据分析基础
http://blog.csdn.net/cbbing/article/details/50721468
1、
# 输出系统当前时间now = datetime.now()print nowprint now.dayprint now.weekday() # 有疑问 为何比真实时间晚一天?是因为时区问题?
2、
from datetime import date, timeprint time(3, 24) # 3时24分
3、"strptime" 方法可以根据需求形式解析用字符串表示的日期或时间字段。
test_time = "2/20/09 16:03"print datetime.strptime(test_time, "%m/%d/%y %H:%M") # 必须严格对照原格式, 感觉很不实用
4、事实证明 "dateutil" 库中的日期解析器要远比 "strptime" 要强大得多
from dateutil.parser import parsetest_time_1 = "2/20/09 16:03"test_time_2 = "2009/2/20 16:03:01"test_time_3 = "2009-2-20 16:03:01"test_time_4 = "2009-2/20 16:03:01"print parse(test_time_1)print parse(test_time_2)print parse(test_time_3)print parse(test_time_4) # 输出结果2009-02-20 16:03:002009-02-20 16:03:012009-02-20 16:03:012009-02-20 16:03:01
5、为了简单起见,Pandas提供了“to_datetime”方法来识别字符串形式的一整个序列,并将其转换为“datetime”对象。
file = pd.read_csv(path)print pd.to_datetime(file.time)print pd.to_datetime([None])注:Pandas 中对于时间类型的缺失值有一个特定的值,“NaT”
6、
file = pd.read_csv(path, index_col=None)#print file.number # 报错没有 number 属性?是因为使用它来作为 index_col 了?当 index_col 设定为 None 时可以正常输出print file.time
7、unique 输出序列的元素,且重复值只输出一次(即去重)
8、merge: 将两个 DataFrame 对象按键(key)合并
merge的参数形式如下:
pd.merge(left, right, how='inner', on=None, left_on=None,
right_on=None, left_index=False,right_index=False,
sort=False, suffixes=('_x', '_y'), copy=True, indicator=False)
其中 : left : 数据框,right : 数据框 how : {'left', 'right', 'outer', 'inner'}, 默认值为 'inner'
* left: 只使用left数据框的键值
* right: 只使用right数据框的键值
* outer: 使用两个数据框键值的并集
* inner: 使用两个数据框键值的交集
# 当两个数据框有一个共同的列名时, 默认以该列的值作为合并时的键值df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test3=range(20, 26)))print pd.merge(df1, df2) # 默认以两个数据框的键值的交集为键值# 输出结果 test1 test2 test30 0 10 201 0 10 232 1 11 213 1 11 244 2 12 225 2 12 25
# 由于 merge 默认以两个数据框的键值的交集为键值, 故当交集为空时, 合并后的数据框也为空df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(10, 13) * 2, test3=range(20, 26)))print pd.merge(df1, df2) # 默认以两个数据框的键值的交集为键值# 输出结果Columns: [test1, test2, test3]Index: []
# 当两个数据框有一个共同的列名时, 默认以该列的值作为合并时的键值df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test3=range(20, 26)))print pd.merge(df1, df2, how="outer") # 以两个数据框的键值的并集为键值# 输出结果 test1 test2 test30 0 10 20.01 0 10 23.02 1 11 21.03 1 11 24.04 2 12 22.05 2 12 25.06 3 13 NaN
on: 取值为标签或列表 取值即为合并的字段,要求必须同时存在与被合并的数据框,如果取值为None,并且不按照索引合并时,函数就默认按照列的交集合并。
# 当两个数据框有多个相同的列名时, 没被选择作为键的列名将会被系统标记为不同的列名df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test2=range(10, 16), test3=range(20, 26)))print pd.merge(df1, df2, on="test1") # 以 test1 为键# 输出结果test1 test2_x test2_y test30 0 10 10 201 0 10 13 232 1 11 11 213 1 11 14 244 2 12 12 225 2 12 15 25或
# 当两个数据框有多个相同的列名时, 没被选择作为键的列名将会被系统标记为不同的列名df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test2=range(10, 16), test3=range(20, 26)))print pd.merge(df1, df2, on="test2") # 以 test2 为键# 输出结果 test1_x test2 test1_y test30 0 10 0 201 1 11 1 212 2 12 2 223 3 13 0 23
# 当两个数据框有多个相同的列名时, 可以选择多个列名作为键df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test2=range(10, 16), test3=range(20, 26)))print pd.merge(df1, df2, on=["test1", "test2"]) # 以 test1, test2 为键# 输出结果 test1 test2 test30 0 10 201 1 11 212 2 12 22
left(right)_on: 取值为标签或列表或数组形式 left(right)数据框中用来合并的字段,可以是同数据框长度的向量或者向量列表,被用 来作为特别指定的合并键值。
# 指定两个数据框中各自用于合并的列名df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test2=range(10, 16), test3=range(20, 26)))print pd.merge(df1, df2, left_on="test1", right_on="test1") # 以 "test1" 为键# 输出结果test1 test2_x test2_y test30 0 10 10 201 0 10 13 232 1 11 11 213 1 11 14 244 2 12 12 225 2 12 15 25
left(right)_index:取值为布尔值,默认为False 使用left(right)数据框的索引作为合并键值,如果是多重索引,另一个数据框中键值的 数目必须和索引的层级相符。
# 以行索引为键df1 = pd.DataFrame(dict(test1=range(4), test2=range(10, 14)))df2 = pd.DataFrame(dict(test1=range(3) * 2, test2=range(10, 16), test3=range(20, 26)))print pd.merge(df1, df2, left_index=True, right_index=True) # 以行索引为键# 输出结果test1_x test2_x test1_y test2_y test30 0 10 0 10 201 1 11 1 11 212 2 12 2 12 223 3 13 0 13 23
9、联结 Concatenation
向一个已经固定行和列的数据集中分别添加行和列
10、data.dtypes 可以知道各个列的属性
- 『Python学习』pandas进阶学习笔记
- python pandas学习笔记
- [Python] Pandas 学习笔记(一)
- Python Pandas 快速学习笔记
- python的pandas学习笔记
- Python进阶学习笔记
- Python学习笔记(进阶)
- Python学习笔记(进阶)
- python学习笔记(进阶)
- python pandas库的学习笔记一pandas的数据结构
- python pandas库的学习笔记二pandas的基本功能
- Python:Pandas学习笔记(1)
- python中pandas库学习笔记
- python学习笔记:ipython,scipy,pandas,flask
- python学习笔记一(pandas入门)
- python学习笔记二(pandas基础)
- python中pandas库学习笔记
- 【python学习笔记】pandas.read_csv参数整理
- opus编译库到arm上面用
- C文件读写
- Android 中ListView 嵌套 ListView
- 理解Android编译命令
- 【IE浏览器】解决margin: 0 auto;不居中办法!
- 『Python学习』pandas进阶学习笔记
- chrome跨域请求注意事项
- Android drawable微技巧,你所不知道的drawable的那些细节
- NYOJ 673 悟空的难题 数组标记排序
- ajax+promise 封装http请求
- 门面模式/外观模式
- Shell编程实现随机函数
- vi编辑器假死状态
- 性能测试