目录
- 绝对路径:绝对路径是指文件在硬盘上真正存在的路径,就是相当于从计算机根目录开始出发一直搜索到文档为止的目录信息.
- 相对路径:相对路径非常简单,就是需要提取的文件就是相对于当前目标文件位置。
- EXAMPLE:
- 1.pop_path = r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\python学习\population.csv"这个就是绝对路径,从根目录开始.
-
- 2.pop_path = r'population.csv'这个就是相对路径,这个文件在文件夹里面,只需要直接提取出来即可。
- #以具体路径的形式读取文件
- pop_path = r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\python学习\population.csv"#前面一定要加个r
- population = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9])
- population
- #将文件放入同文件夹中,直接读取
- pop_path = r'population.csv'
- pop = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9])
- pop
- #将某一列当作行索引
- pop = pd.read_csv(pop_path,
- encoding='gbk',
- skiprows=[0, 1, 8, 9],
- index_col='指标')
- pop.index.name = None
- pop
- #代码对齐
- pop = pd.read_csv(pop_path, encoding='gbk',skiprows=[0, 1, 8, 9], index_col='指标')
- pop.index.name = None
- pd.set_option('display.unicode.ambiguous_as_wide', True)
- pd.set_option('display.unicode.east_asian_width', True)
- pd.set_option('display.max_columns', None)
- pop
- #读取数据
- #读取2019-2014年的人口并且创建一个对应的csv文件.
- pop2 = pop.iloc[:, 0:6]
- pop2.to_csv('pop2.csv', encoding='gbk')
- #缺失值处理
- np.random.seed(3)
- grades = pd.DataFrame(np.random.randint(60, 100, size=(4, 3)),
- index=['Ann', 'Bob', 'Cindy', 'Lee'],
- columns=['Python', 'C', 'Java'])
- #np.nan/None创建确实值
- grades.loc['Ann', 'C'] = np.nan
- grades.loc['Cindy', 'Python'] = None
- grades
- #发现检索缺失值
- grades.info()
- #查看对应的缺失值 3 non-null表示
- #Python/C各有一个缺失值
- Pandas有两种发现缺失值的方法:isnull和notnull
- isnull(): Series.isnull()、DataFrame.isnull()
- """
- 元素级别的判断---把DataFrame或Series所有元素的位置都列
- 出来,元素为空或者NA返回True,否则返回False
- """
- grades.isnull()
- """
- 和isnull类似,区别是notnull的判断依据相反,即缺失值返回
- False,非缺失值返回True
- """
- grades.notnull()
- #any()函数
- """
- 1.isnull()和any函数搭配:Series.any()、DataFrame.any()
- 2.和Numpy的any函数类似,统计Series或DataFrame中是否存在True,若存在,返回True,否则返回False
- 2.1.默认参数axis=0,即按列统计
- 2.2.调用DF.isull( ).any( ),如果某一列中有缺失值,则返回值中该列对应值为True
- """
- grades.isnull().any()
- #如结果所示,Java没有缺失值,显示为True C和Python都有缺失值,显示为False
- #搜寻nan的信息
- grades.index[grades.isnull().any(axis=1)]#按行搜索,index[]花式搜索
- #处理缺失值:
- """
- Pandas剔除缺失值的方法-DataFrame.dropna()
- 默认axis=0,剔除包含缺失值的整行数据
- """
- grades.dropna()
- #填充缺失值
- #数据是宝贵的,一般情况只要数据缺失比例不高,尽量不要剔除缺失值,而是填充缺失值
- """
- 1.填充缺失值的方法:Series.fillna(),DataFrame.fillna()
- 2.DataFrame.fillna(value=None, method=None,axis=None, inplace=False)
- 2.1.value: 填充的值---用常数替代缺失值
- 2.2.method:填充方式---{ ‘bfill’, 'ffill', None}
- 2.3.ffill : 使用前一个值来填充缺失值
- 2.4.bfill : 使用后一个值来填充缺失值
- """
- #全部填充0
- grades.fillna(0)
- #按照自己的意愿填充
- grades.fillna({'Python':80,'C':60})
- #分别采用ffill和bfill方式对dataFrame缺失值填充
- #ffill参考前一个
- grades.fillna(method='ffill')#默认axis=0 按列来
- grades.fillna(method='ffill',axis=1)#也可以指定
- #bfill参考后一个
- grades.fillna(method='bfill')#默认axis=0 按列来
- grades.fillna(method='bfill',axis=1)#也可以指
- #利用某些统计数据进行填充
- grades['C'].fillna(grades['C'].mean())