目录
1. 将时间字符串转化为时间戳
原始数据:
观测时间 经度 纬度 强度 陡度
0 2012-02-22 12:14:52.0 118.6845 31.6724 55.66 5.02
1 2012-02-22 12:21:55.0 118.6875 31.7405 72.99 62.28
2 2012-02-22 12:27:46.0 118.6998 31.7565 77.46 8.93
3 2012-02-22 12:35:34.0 118.9438 31.4310 -29.47 -17.97
4 2012-02-22 12:35:34.0 118.9416 31.4422 -13.43 -6.88
代码:
data['观测时间']=data['观测时间'].apply(lambda x:time.mktime(time.strptime(x,'%Y-%m-%d %H:%M:%S.0')))
效果:
观测时间 经度 纬度 强度 陡度
0 1.329884e+09 118.6845 31.6724 55.66 5.02
1 1.329885e+09 118.6875 31.7405 72.99 62.28
2 1.329885e+09 118.6998 31.7565 77.46 8.93
3 1.329885e+09 118.9438 31.4310 -29.47 -17.97
4 1.329885e+09 118.9416 31.4422 -13.43 -6.88
解释:
strptime函数是将字符串按照后面的格式转换成时间元组类型;mktime函数则是将时间元组转换成时间戳。
2. 设置索引列
代码:
data.set_index("观测时间", inplace=True)
解释:
将 data["观测时间"] 作为新的索引。
3. 读取文件columns细节处理
以 read_csv() 为例
3.1 csv默认将第一行设置为columns
import pandas as pd
df_example = pd.read_csv('xxx.csv')
# 等同于:
df_example = pd.read_csv('xxx.csv', header=0)
3.2 想要换一个别的列名(原来有)
df_example = pd.read_csv('xxx.csv', names=['A', 'B','C'])
# 即
df_example = pd.read_csv('xxx.csv', header=0, names=['A', 'B','C'])
# header=0 来说明文件里原来有列名
3.3 想加列名,原来没有
df_example = pd.read_csv('xxx.csv', header=None, names=['A', 'B','C'])
# header=None 来说明原来是没有columns的
3.4 不想加列名,原来也没有
df_example = pd.read_csv('xxx.csv', header=None)
# header=None 来说明原来是没有columns的
4. groupby
groupby
的过程就是将原有的DataFrame
按照groupby
,划分为若干个分组DataFrame
。但此时数据结构为DataFrameGroupBy,可以在此基础上调用get_group(),返回的则是一个·DataFrame·对象。所以说,在groupby
之后的一系列操作(如agg
、apply
等),均是基于子DataFrame
的操作。
group = data.groupby("company")
# 根据company将原有DataFrame分成不同的子DataFrame
4.1 agg聚合操作
针对样例数据集,如果我想求不同公司员工的平均年龄和平均薪水,可以按照下方的代码进行:
In [12]: data.groupby("company").agg('mean')
Out[12]:
salary age
company
A 21.50 27.50
B 13.00 29.00
C 29.25 27.25
如果想对针对不同的列求不同的值,比如要计算不同公司员工的平均年龄以及薪水的中位数,可以利用字典进行聚合操作的指定:
In [17]: data.groupby('company').agg({'salary':'median','age':'mean'})
Out[17]:
salary age
company
A 21.5 27.50
B 10.0 29.00
C 30.0 27.25
4.2 apply操作
aggregate
函数不同于apply
,前者是对所有的数值进行一个聚合的操作,而后者则是对每个数值进行单独的一个操作。
def addOne(data):
return data + 1
df['Age'] = df['Age'].apply(addOne)
df['Age'] = df['Age'].apply(int)
感谢(不断增加 =,=):
Pandas在读取csv时如何设置列名--常用方法集锦pandas之分组groupby()的使用整理与总结_敲代码的quant的博客-CSDN博客