目录
1.文件读取方式
1.1.绝对路径读取文件
1.2.相对路径读取文件
2.列表数据操作
2.1.列索引指定
2.2.代码数据对齐
3.创建新CSV文件
4.缺失值处理
4.1.缺失值创建
4.2.缺失值检索
4.3.缺失值查询
4.3.1.isnull()函数判断
4.3.2.notnull()函数判断
4.3.3.any()函数搭配寻找
4.3.4. 具体寻找缺失索引
4.4.缺失值处理
4.4.1.缺失值剔除
4.4.2.缺失值填充
4.4.2.1.按常数填充
4.4.2.2.按指定填充
4.4.2.3.按前数填充
4.4.2.4.按后数填充
4.4.2.5.按统计数据填充
绝对路径:绝对路径是指文件在硬盘上真正存在的路径,就是相当于从计算机根目录开始出发一直搜索到文档为止的目录信息.
相对路径:相对路径非常简单,就是需要提取的文件就是相对于当前目标文件位置。
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())