版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moxigandashu/article/details/60572195
对于刚接触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 time
stamp=1499866461
time_loc=time.localtime(stamp)
time=time.strftime('%Y-%m-%d %H%M%S',time_loc)
- 方法2:引入 datetime,通过utcfromtimestamp函数直接转换。这种方法得到的类型是datetime.datetime。
stamp=1499866461
time=datetime.utcfromtimestamp(stamp)
In [12]: from datetime import datetime
In [13]: stamp=1499866461
In [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]: df
Out[19]:
char date num
0 a 2017/7/1 1
1 b 2017/7/2 2
2 c 2017/7/3 3
In [21]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
char 3 non-null object
date 3 non-null object
num 3 non-null object
dtypes: 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 2
Data columns (total 3 columns):
char 3 non-null object
date 3 non-null datetime64[ns]
num 3 non-null object
dtypes: datetime64[ns](1), object(2)
memory usage: 152.0+ bytes
In [25]: df.set_index(df['date'])#设置为index
Out[25]:
char date num
date
2017-07-01 a 2017-07-01 1
2017-07-02 b 2017-07-02 2
2017-07-03 c 2017-07-03 3
- 方法2:运用函数.DatetimeIndex
In [29]: df.index=pd.DatetimeIndex(df['date'])
In [30]: df.index
Out[30]: DatetimeIndex(['2017-07-01', '2017-07-02', '2017-07-03'], dtype='datetime64[ns]', name='date', freq=None)
In [31]: df
Out[31]:
char date num
date
2017-07-01 a 2017/7/1 1
2017-07-02 b 2017/7/2 2
2017-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 os
pwd=os.getcwd()
os.chdir(os.path.dirname(filepath))
result= pd.read_table(os.path.basename(filepath))
os.chdir(pwd)
9 数字转换成字符串,方便进行索引,切片,匹配
解决方法:’%d’%x