标签:task2 row df col 组队 pd csv pandas Out
一、文件读取和写入
1. 文件读取
-
csv:pd.read_csv(filename)
-
txt :pd.read_table(filename)
-
excle:pd.read_excel(filename)
示例:
import pandas as pd
df_csv = pd.read_csv('my_csv.csv')
Out[6]:
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
header=None表示第一行不作为列名,例如:
import pandas as pd
df_csv = pd.read_csv('my_csv.csv',header=None) #原本一共4行,现在变成了5行
Out[9]:
0 1 2 3 4
0 col1 col2 col3 col4 col5
1 2 a 1.4 apple 2020/1/1
2 3 b 3.4 banana 2020/1/2
3 6 c 2.5 orange 2020/1/5
4 5 d 3.2 lemon 2020/1/7
usecols表示读取指定列:(输入为列的名称)
import pandas as pd
df_csv = pd.read_csv('my_csv.csv',usecols=['col1']) #读取第一列
Out[13]:
col1
0 2
1 3
2 6
3 5
nrows表示读取的行数:(输入为整数)
import pandas as pd
df_csv = pd.read_csv('my_csv.csv',nrows=2) #读取两行
Out[15]:
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2.文件写入
- csv:data.to_csv(path, index = False) index=False表示将索引去除
- excel:data.to_excel(path, index = False)
- txt:data.to_csv(path,sep='\t', index=False)
二.基本数据结构
1.series
由四个部分组成,数据:data,索引:index,存储类型:dtype,名称:name;例如:
s = pd.Series(data = [1,10,100],index=[1,2,3],name = 'my_series')
Out[20]:
1 1
2 10
3 100
Name: my_series, dtype: int64
访问这些属性可以分别用:数据:s.values,索引:s.index,类型:s.dtype,名称:s.name访问;
2.DataFrame
DataFrame在sreies的基础上,将列进行了扩展,由原来的一维变为了二维。
创建方法和sries基本一致,增加列的索引名,例如:
In [33]: df = pd.DataFrame(data = {'col_0': [1,2,3], 'col_1':list('abc'),
....: 'col_2': [1.2, 2.2, 3.2]},
....: index = ['row_%d'%i for i in range(3)])
....:
In [34]: df
Out[34]:
col_0 col_1 col_2
row_0 1 a 1.2
row_1 2 b 2.2
row_2 3 c 3.2
可以按列索引,取出一列或者多列:
In [35]: df['col_0'] #取出某一列
Out[35]:
row_0 1
row_1 2
row_2 3
Name: col_0, dtype: int64
In [36]: df[['col_0', 'col_1']] #取出多列
Out[36]:
col_0 col_1
row_0 1 a
row_1 2 b
row_2 3 c
三、常见基本函数
1.汇总函数
head
函数表示返回表的前n行,tail
返回后n行:
In [46]: df.head(2)
Out[46]:
School Grade Name Gender Height Weight Transfer
0 Shanghai Jiao Tong University Freshman Gaopeng Yang Female 158.9 46.0 N
1 Peking University Freshman Changqiang You Male 166.5 70.0 N
In [47]: df.tail(3)
Out[47]:
School Grade Name Gender Height Weight Transfer
197 Shanghai Jiao Tong University Senior Chengqiang Chu Female 153.9 45.0 N
198 Shanghai Jiao Tong University Senior Chengmei Shen Male 175.3 71.0 N
199 Tsinghua University Sophomore Chunpeng Lv Male 155.7 51.0
info
返回表的信息概况, describe
返回表中数值列对应的主要统计量 :
In [48]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 School 200 non-null object
1 Grade 200 non-null object
2 Name 200 non-null object
3 Gender 200 non-null object
4 Height 183 non-null float64
5 Weight 189 non-null float64
6 Transfer 188 non-null object
dtypes: float64(2), object(5)
memory usage: 11.1+ KB
In [49]: df.describe()
Out[49]:
Height Weight
count 183.000000 189.000000
mean 163.218033 55.015873
std 8.608879 12.824294
min 145.400000 34.000000
25% 157.150000 46.000000
50% 161.900000 51.000000
75% 167.500000 65.000000
max 193.900000 89.000000
2.统计函数
quantile:返回分位数
In [53]: df_demo.quantile(0.75)
Out[53]:
Height 167.5
Weight 65.0
Name: 0.75, dtype: float64
count:返回非缺失值个数
In [54]: df_demo.count()
Out[54]:
Height 183
Weight 189
dtype: int64
idxmax:返回最大值索引
In [55]: df_demo.idxmax() # idxmin是对应的函数
Out[55]:
Height 193
Weight 2
dtype: int64
3.唯一值函数
主要用来统计表中类别的个数。
-
unique:统计类别的列表
-
nunique:统计类别的数目
-
value_counts:统计不同类别出现的次数
上面这几个函数只能针对某一列使用,若对多列使用,应该用drop_duplicates函数,相当于是去除重复的值。
对于drop_duplicates函数中的keep参数:keep=first表示保留第一次出现的行,keep=last表示保留最后一次,False表示把重复的全都剔除。
4.替换函数
- 映射替换:replace
- 逻辑替换:where和mask;
where
函数在传入条件为False
的对应行进行替换,而mask
在传入条件为True
的对应行进行替换。 - 数值替换:round,四舍五入;abs,取绝对值;clip,上下边界截断。
5.排序函数
- 值排序:sort_values,其中ascending参数默认为True升序,false为降序 (按列值排)
- 索引排序:sort_index,索引用leve表示,排序顺序是按字母的顺序 (按行值排)
6.apply方法
有点像上一章的map方法,也是通过自定义函数来进行操作
四、窗口对象
标签:task2,row,df,col,组队,pd,csv,pandas,Out 来源: https://www.cnblogs.com/zwrAI/p/14159457.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。