import pandas as pd # 导入pandas数据库
import numpy as np # 导入numpy数据库
1. 读取CSV文件:
路径=D:\python\数据FacAccountList_Outward_20210531.txt
df=pd.DataFrame(pd.read_csv(r'路径',sep='^'))
# '^':是csv文件的分隔符;有的csv文件分隔符为‘,’ ,代码就标注sep=',' 作为分隔符。
# pd.DataFrame: 是为了将csv文件转换成类似Excel的二维表格,方便电脑读取
# r'':是直接将复制的路径供电脑读取,否则需手都将'\'改为'/'格式
2. 读取Excel文件:
路径=D:\python\数据FacAccountList_Outward_20210531.xlsx
df=pd.DataFrame(pd.read_evcel(r'路径',header=0))
# 以下数据代码均建立于将数据集设置为DataFrame的前提下
----------------------------------------------------------------------------
1. 读取并显示指定行:
print(df.iloc[7:9]) # 读取df中的第7-9行的所有数据
print(df.iloc[[0,2,3],:]) #读取df中的第1,3,4行的所有数据
2. 读取并显示指定列:
print(df['姓名']) # 读取df中‘姓名’列的所有数据
print(df.iloc[:, 0]) # 读取df中首列的所有数据
print(df.iloc[:,:5]) # 读取df中前5列所有数据
3. 读取并显示指定列的指定行:
print(df.iloc[7:10, 36:41]) # 读取df中第7-9行中第37-41列的数据
print(df.iloc[[0,2,3],[2,4]]) # 读取df中第1、3、4行中第3和5列的数据
print(df.loc[[1,3,6],['姓名','价格']]) # 读取第2、4、7行“姓名”和“交易额”列的数据
print(df[:5][['姓名','价格']]) # 读取df中前5行“姓名”和“价格”列的数据
----------------------------------------------------------------------------------------------
1. 筛选满足1个条件的数据:
print(df[df['价格']<700]) # 筛选出df中“价格”列小于700的数值
2. 筛选满足多个条件的数据:
print(df[(df['价格']<300)&(df['产品']=='牛奶')]) # 筛选出df中“价格”列小于300 & “产品”列名为牛奶的数值
3. 筛选指定列包含某个字符串的数据:
print(df[df['国家代码'].str.contains('CN')]) # 筛选出df中的“国家代码”列中数据含字母“CN”的数据
4. 筛选指定列不包含某个字符串的数据:
print(df[df['国家代码'].apply(lambda x: not.str(x).startswith('CN'))]) # 筛选出df中的“国家代码”列中数据开头不是字母“CN”的数据
-----------------------------------------------------------------------------------------------
1. Lambda + 1个if 条件语句:
将‘数值‘列 x>180 的数值标注为 ’非正常‘ ,其余的数值标注为 ‘正常’
df['数值']=df['数值'].apply(lambda x:'非正常' if x>180 else '正常')
2. Lambda + 多个if 条件语句:
将‘数值‘列 x>180 的数值标注为 ’非正常‘ ,180>x>0的数值标注为‘正常’,其余(即0>x)的数值标注为 ‘未到期’
df['数值']=df['数值'].apply(lambda x:'非正常' if x>180 else '正常' if x>0 else '未到期')
以上“Lambda+多个if条件语句”也可用普通多条件语句if、elif、else代替
for i in df['数值']:
if i>180:
print('非正常')
elif i>0:
print('正常')
else:
print('未到期')
-------------------------------------------------------------------------
数据替换:
1. 将df中所有数据‘abc’替换成‘A’
df.replace('abc','A',inplace=True) # 添加inplace=True才会改变数据源的数据
2 将df中指定(‘字母’)列中的数据‘abc’替换成‘A’
df['字母'].replace('abc','A',inplace=True) # 添加inplace=True才会改变数据源的数据
3. 将df中集合1中元素分别替换成集合2中元素:
集合1=['abc','def']
集合2=['A','B']
df.replace(集合1,集合2,inplace=True) # 添加inplace=True才会改变数据源的数据
4. 将df中指定(‘字母’)列中的数据‘abc’中的‘ab’替换成‘A’,最终显示为‘Ac’
df['字母']=df['字母'].str.replace('ab','A',inplace=True)
---------------------------------------------------------------------------------------------------
在指定位置插入1列:
df.insert(3,'日期',20210630)