动手学数据分析task1

task1:Pandas基础

导入数据的方式:

import pandas as pd

df = pd.read_csv('trian.csv', chunksize=, header=, index_col=)

chunksize设置分块的大小,也就是每次读取的大小;

header用来指定第几行是首行。header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现,第3行数据将被丢弃,dataframe的数据从第5行开始。)。

index_col : int or sequence or False, default None

用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。

如果文件不规则,行尾有分隔符,则可以设定index_col=False 来使得pandas不使用第一列作为行索引。

查看数据的基本情况

df.info():          # 打印摘要
df.describe():      # 描述性统计信息
df.values:          # 数据 <ndarray>
df.to_numpy()       # 数据 <ndarray> (推荐)
df.shape:           # 形状 (行数, 列数)
df.columns:         # 列标签 <Index>
df.columns.values:  # 列标签 <ndarray>
df.index:           # 行标签 <Index>
df.index.values:    # 行标签 <ndarray>
df.head(n):         # 前n行
df.tail(n):         # 尾n行
pd.options.display.max_columns=n: # 最多显示n列
pd.options.display.max_rows=n:    # 最多显示n行
df.memory_usage():                # 占用内存(字节B)

创建一个Series和DataFrame对象

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)
example_1
out:
  Ohio      35000
  Texas     71000
  Oregon    16000
  Utah       5000
  dtype: int64
  
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
example_2 = pd.DataFrame(data)
example_2
out:
  state  year  pop
  0  Ohio  2000  1.5
  1  Ohio  2001  1.7
  2  Ohio  2002  3.6
  3  Nevada  2001  2.4
  4  Nevada  2002  2.9
  5  Nevada  2003  3.2

查看某一列的内容

df['列名']
df.列名

删除某一列

del df['列名']
df.drop(labels='列名', axis=1) #删除单个列
df.drop(labels=['列名1', '列名2'], axis=1) #删除多个列
df.drop(columns=['列名1', '列名2'])
df.drop([0, 1]) # 删除第一、二行。

数据的选择

按照行选择:

df.loc[[0, 1]] # 表示选择前两行,返回的结果是DataFrame类型的数据
df.loc[[100], ['Age']] # 返回index=100行的Age列的DataFrame类型的数据
df[:0] # 选择第一行,返回的结果是Series类型的数据

loc和iloc的区别:

loc是标签索引,说白了就是行上的标签,如果标签正好是整数的话,那么就类似于数组那样取数据了(最好不要这样用,应该用iloc来进行整数索引)。

iloc是按照数字索引,类似于c语言中对数组的索引。

索引set_index()和reset_index()函数的区别。

如何在pandas中使用set_index( )与reset_index( )设置索引 - 知乎 (zhihu.com)

reset_index重置索引,将复合索引恢复,或是将索引变得连续。

排序:

df.sort_values(by='列名', ascending=True) # 升序
df.sort_index() #让行索引升序
df.sort_index(axis=1) #让列索引升序
df.sort_values(by=['a', 'c'], ascending=True) # 多关键字排序,都按照升序的方式
df.sort_values(by=['a', 'c'], ascending=[True, False]) # 第一个关键字升序,第二个降序

DataFrame相加

对应行标签和列标签的可以相加,如果不对应,值就是NaN,注意相加不是集合的并。

Jupyter Notebook查缺补漏

在jupyter中某个对象的后面输入问号?,可以获得该对象的一些信息。

In [8]: b = [1, 2, 3]
In [9]: b?
Type:        list
String Form:[1, 2, 3]
Length:      3
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
In [10]: print?
Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:    string inserted between values, default a space.
end:    string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Type:       builtin_function_or_method

使用%run+python文件名,运行这个python文件

In [14]: %run ipython_script_test.py

运行后文件中的变量、函数名都可以在IPython中使用。

使用%load+文件名,将文件中的内容导入到jupyter单元中(只要是文本文件就可以):

%load test.py

执行该单元格后,会将test.py中的所有内容都导入到上面的单元格中,并注释掉原来的load行代码:

# %load test.py
import sys

def printHello(args):
    print("hello world")
    print(f"len(args): {len(args)}")
    print(f"args: {args}")
    a = 1
    
printHello(sys.argv[1:])
c = 2

%matplotlib inline 这个命令是设置IPython和matplotlib的一些交互,这样画的图就可以出现在jupyter中了。

资料

datawhalechina/hands-on-data-analysis: 动手学数据分析以项目为主线,知识点孕育其中,通过边学、边做、边引导来得到更好的学习效果 (github.com)

《利用python进行数据分析》这本书

Wes McKinney,利用python进行数据分析,作者个人网站,开放了第三版。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值