Fork me on GitHub

pandas技巧3

本文中总结了最近工作中用到的几个panads操作技巧

image.png

pandas显示列和行

显示全部的属性字段和行激励

1
2
3
4
5
6
7
8
# 显示所有列
# pd.set_option('display.max_columns', None)

#显示所有行
# pd.set_option('display.max_rows', None)

#设置value的显示长度为100,默认为50
# pd.set_option('max_colwidth',100)

解决中文乱码

当字段属性中存在中文的时候,读取数据的时候需要加上encoding参数

1
one = pd.read_csv(r"./one.csv",engine="python",encoding="utf-8")  # 也有可能是gb18030

时间和时间戳

时间转成时间戳

  1. 如果是本地时间的时间戳,在线工具:https://tool.lu/timestamp/

  2. 如果是某个指定时间的时间戳

  • 利用strptime()函数将时间转换成时间数组
  • 利用mktime()函数将时间数组转换成时间戳
1
2
3
4
import time
import datetime
timeArr = time.strptime("2020-06-01 00:00:00",'%Y-%m-%d %H:%M:%S')
time.mktime(timeArr)

image.png

时间戳转时间

  • localtime :将时间戳转成时间元组
  • strftime:将时间元组格式为特定形式
1
2
3
4
5
6
7
timestamp = 1591212042.8380945

#转换成localtime
time_local = time.localtime(timestamp)
#转换成新的时间格式(2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)
dt

image.png

重新格式化时间

1
2
3
4
5
6
dt = "2020-06-03 20:28:54"

#转换成时间数组
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
#转换成新的时间格式(20160505-20:28:54)
dt_new = time.strftime("%Y%m%d-%H:%M:%S",timeArray)

image.png

去掉时间数据中的时分秒

将完整时间数据中的时分秒去掉

1
2
# 去掉时间中的时分秒,仅保留日期
df['basetime'] = pd.to_datetime(df['basetime']).dt.normalize()

按照指定格式获取当前时间

先获取到本地的时间戳;再将该时间戳转成指定的时间格式

1
2
3
4
5
6
7
8
time_now = int(time.time())  # 获取当前时间戳

# 转换成localtime
time_local = time.localtime(time_now)

# 转换成新的时间格式(2020-06-04 19:30:25)
# strftime指定格式
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)

image.png

读取TXT中的json数据

方式1

先通过with语句读进来,再利用read_json进行读取

image.png

方式2

直接通过read_table读进来,再进行转化

1
2
3
4
5
6
7
data = pd.read_table("./user_data.txt")

df_user = pd.DataFrame()

for i in range(len(data)):
df1 = pd.DataFrame(json.loads(data.iloc[i].values[0]), index=[i])
df_user = pd.concat([df_user, df1]) # 合并的时候是将df1全部加到df_user的后面,相当于是更新df_user

image.png

去重后重新排序行索引

pandas中去重之后保留的索引仍是原数据的索引,有时候需要按照0,1,2,3,…进行重新排列

1
df.drop_duplicates("userid").reset_index(drop=True)  # drop参数是不保留原始的行索引信息

本文标题:pandas技巧3

发布时间:2020年06月04日 - 15:06

原始链接:http://www.renpeter.cn/2020/06/04/pandas%E6%8A%80%E5%B7%A73.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea