csv文件数据处理基本操作和基础函数
一、文件读取和写入
import pandas as pd
1.读取
df=pd.read_csv(‘文件名字’)
csv格式用read_csv
txt格式用read_table
excel格式用read_excel
2.写入
指输出已处理的数据
df.to_csv(‘文件名字’)
excel格式用to_excel
二、基本数据结构
主要有series和dataframe
1.series
(a)创建
对于一个Series,其中最常用的属性为值(values),索引(index),名字(name),类型(dtype)
s = pd.Series(np.random.randn(5),index=['a','b','c','d','e'],name='这是一个Series',dtype='float64')
s
(b)访问series属性
s.values
s.name
s.index
s.dtype
©取出某元素
s[‘a’]
2.DataFrame
(a)创建
df = pd.DataFrame({'col1':list('abcde'),'col2':range(5,10),'col3':[1.3,2.5,3.6,4.6,5.8]},index=list('一二三四五'))
df
col1 col2 col3
一 a 5 1.3
二 b 6 2.5
三 c 7 3.6
四 d 8 4.6
五 e 9 5.8
(b)从DataFrame取出一列
df[‘col1’]
type(df[‘col1’])类型为series
©修改行或列名
df.rename(index={‘一’:‘one’},columns={‘col1’:‘new_col1’})
行名字为‘一’的改为‘one’
列名字为‘col1’的改为‘new_col1’
(d)调用属性和方法
df.index 行名字
df.columns 列名字
df.values 所有值
df.shape 显示几行几列
(e)索引自动对齐
df1 = pd.DataFrame({'A':[1,2,3]},index=[1,2,3])
df2 = pd.DataFrame({'A':[1,2,3]},index=[3,1,2])
df1-df2 #由于索引对齐,因此结果不是0
A
1 -1
2 -1
3 2
(f)删除、添加列
指定删除某行、列
df.drop(index='五',columns='col1') #设置inplace=True后会直接在原DataFrame中改动
del df['col1']
pop方法直接在原来的DataFrame上操作,且返回被删除的列,与python中的pop函数类似
我是处理csv数据的,一般不用这个
df['col1']=[1,2,3,4,5]
df.pop('col1')
一 1
二 2
三 3
四 4
五 5
增加列直接增加
df1[‘B’]=0 增加B列,值为0
用assign增加一列,但不会更改原dataframe,若想确保更改用
a=df1.assign(C=pd.Series(list(‘def’)))
print(a)
(g)根据类型选择列
df.select_dtypes(include=[‘number’])
(h)将series转换为DataFrame
s为一个series,可以是大表中的行也可以是列
s.to_frame()
三、常用基本函数
1.nunique和unique
显示有多少个唯一值,输出结果为数字
df[‘physics’].nunique()
显示所有的唯一值,不显示多少个把值显示出来
df[‘physics’].unique()
2.count和value_counts
count返回非缺失元素个数,即physics这列有多少个非缺失值
df.[‘physics’].count()
value_counts返回每个元素多少个
df.[‘physics’].value_counts()
3.info和describe
df.info()
info函数返回有哪些列、有多少非缺失值、每列的类型
df.describe()
describe默认统计数值型数据的各个统计量
可以自行选择分位数
df.describe(percentiles=[.05, .25, .75, .95])
4.idxmax和nlargest
idxmax返回最大值
df.[‘math’].idxmax
nlargest返回前几个大的元素值
df.[‘math’].nlatgest(5)
5.clip和replace
clip对超过或低于某些值得数进行截断
Math小于50的值记为50,大于50的值记为80
df[‘Math’].clip(50,80).head()
将Address列的’street_1’,‘street_2’替换为’one’,‘two’;或者用字典修改
df[‘Address’].replace([‘street_1’,‘street_2’],[‘one’,‘two’]).head()
四、排序
1.索引排序
df.set_index(‘Math’).sort_index() 将math列设置为索引并排序
2.值排序
df.sort_values(by=‘Class’)根据某列值进行排序
df.sort_values(by=[‘Address’,‘Height’])
多个值排序,即先对第一层排,在第一层相同的情况下对第二层排序
注:
1.value_count不统计缺失值
2.sum加总/mean均值/median中位数/mad根据平均值计算平均绝对离差/min/max/abs绝对值/std标准差/var方差/quantile样本分位数/cummax累计最大值/cumsum累计最小值/cumprod¶累计积