python 使用过程问题总结

来源:互联网 发布:域名别名是什么 编辑:程序博客网 时间:2024/04/19 13:42

对于刚接触Python,在使用过程中存在许多简单或复杂的问题,本文总结Python使用过程中常见的一些问题,欢迎补充。

1 Python,使用pip提示 name pip is not defined

可能是安装的时候没有勾选pip,导致pip无法使用。

1.2 安装Python时勾选了add to path 和pip,但是输入pip还是提示

>>> pip

      Traceback (most recent call last):

       File “< stdin>”, line 1, in <module>

      NameError: name ‘pip’ is not defined

在cmd命令符下输入pip,而不是在Python解释器中输入pip。

2 python注释

单行注释:#

#注释文字

多行注释:两个”’或者”“”括起来。
如:

'''第一行注释第二行注释'''

3 name ‘xrange’ is not defined

在3.0以后的版本,取消了xrange,并 改名为range(),要想使用range()获得一个list,必须显式调用:

>>>list(range(5))

4 如何设置DataFram的行名和列名

直接赋值即可:

df.columns=[]  df.index.name=[]

5 将某一列设置为index

df.index=df['column_name ']

6 将时间戳(绝对时间)转换成地区时间

两种方法,分别得到不同数据类型的时间:

  • 方法1 :先通过localtime函数转化成当地时间,然后通过strftime按照某个格式转化为字符串,因此这种方法得到的是字符串类型的时间。
    eg:
import timestamp=1499866461time_loc=time.localtime(stamp)time=time.strftime('%Y-%m-%d %H%M%S',time_loc)
  • 方法2:引入 datetime,通过utcfromtimestamp函数直接转换。这种方法得到的类型是datetime.datetime
stamp=1499866461time=datetime.utcfromtimestamp(stamp)
In [12]: from datetime import datetimeIn [13]: stamp=1499866461In [14]: time=datetime.utcfromtimestamp(stamp)In [15]: type(time) Out[15]: datetime.datetime

7 将字符串类型的时间转化成“时间戳”索引

引入了 pandas,构造DataFrame 类型数据。

In [18]: df=pd.DataFrame({'date':['2017/7/1','2017/7/2','2017/7/3'],'num':['1','2','3'],'char':['a','b','c']})In [19]: dfOut[19]:   char      date num0    a  2017/7/1   11    b  2017/7/2   22    c  2017/7/3   3In [21]: df.info()<class 'pandas.core.frame.DataFrame'>RangeIndex: 3 entries, 0 to 2Data columns (total 3 columns):char    3 non-null objectdate    3 non-null objectnum     3 non-null objectdtypes: object(3)memory usage: 152.0+ bytes

接下来要做的事情是:1.把date数据类型变为时间类型datetime,2.变为索引

  • 方法一:运用pandas的.to_datetime 和 .set_index
In [23]: df['date']=pd.to_datetime(df['date'])#转换成datetime类型In [24]: df.info()<class 'pandas.core.frame.DataFrame'>RangeIndex: 3 entries, 0 to 2Data columns (total 3 columns):char    3 non-null objectdate    3 non-null datetime64[ns]num     3 non-null objectdtypes: datetime64[ns](1), object(2)memory usage: 152.0+ bytesIn [25]: df.set_index(df['date'])#设置为indexOut[25]:            char       date numdate                          2017-07-01    a 2017-07-01   12017-07-02    b 2017-07-02   22017-07-03    c 2017-07-03   3
  • 方法2:运用函数.DatetimeIndex
In [29]: df.index=pd.DatetimeIndex(df['date'])In [30]: df.indexOut[30]: DatetimeIndex(['2017-07-01', '2017-07-02', '2017-07-03'], dtype='datetime64[ns]', name='date', freq=None)In [31]: dfOut[31]:            char      date numdate                         2017-07-01    a  2017/7/1   12017-07-02    b  2017/7/2   22017-07-03    c  2017/7/3   3

可以看到,DatetimeIndex函数直接转换成Datetime类型的index,但是date数据项依然存在,因此,需要删去:

del df['date']

8 raise error:OSError: Initializing from file failed

描述:pd.read_table(‘filepath’)出现错误,原因是不支持中文的路径
解决方法:

import ospwd=os.getcwd()os.chdir(os.path.dirname(filepath))result= pd.read_table(os.path.basename(filepath))os.chdir(pwd)

9 数字转换成字符串,方便进行索引,切片,匹配

解决方法:’%d’%x

0 0
原创粉丝点击